@orion-js/graphql 3.12.0 → 3.13.1

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.
Files changed (121) hide show
  1. package/LICENSE +21 -0
  2. package/jest.config.js +8 -0
  3. package/lib/buildSchema/getArgs/getField.d.ts +1 -0
  4. package/lib/buildSchema/getArgs/getField.js +49 -0
  5. package/lib/buildSchema/getArgs/index.d.ts +1 -0
  6. package/lib/buildSchema/getArgs/index.js +24 -0
  7. package/lib/buildSchema/getMutation.d.ts +3 -0
  8. package/lib/buildSchema/getMutation.js +18 -0
  9. package/lib/buildSchema/getQuery.d.ts +3 -0
  10. package/lib/buildSchema/getQuery.js +18 -0
  11. package/lib/buildSchema/getResolvers/index.d.ts +3 -0
  12. package/lib/buildSchema/getResolvers/index.js +43 -0
  13. package/lib/buildSchema/getResolvers/index.test.d.ts +1 -0
  14. package/lib/buildSchema/getResolvers/index.test.js +65 -0
  15. package/lib/buildSchema/getResolvers/resolversStore.d.ts +3 -0
  16. package/lib/buildSchema/getResolvers/resolversStore.js +5 -0
  17. package/lib/buildSchema/getSubscription.d.ts +3 -0
  18. package/lib/buildSchema/getSubscription.js +17 -0
  19. package/lib/buildSchema/getSubscriptions/index.d.ts +2 -0
  20. package/lib/buildSchema/getSubscriptions/index.js +26 -0
  21. package/lib/buildSchema/getSubscriptions/index.test.d.ts +1 -0
  22. package/lib/buildSchema/getSubscriptions/index.test.js +52 -0
  23. package/lib/buildSchema/getType/BigIntScalar.d.ts +3 -0
  24. package/lib/buildSchema/getType/BigIntScalar.js +35 -0
  25. package/lib/buildSchema/getType/DateScalar.d.ts +3 -0
  26. package/lib/buildSchema/getType/DateScalar.js +10 -0
  27. package/lib/buildSchema/getType/JSONScalar.d.ts +3 -0
  28. package/lib/buildSchema/getType/JSONScalar.js +42 -0
  29. package/lib/buildSchema/getType/enum.test.d.ts +1 -0
  30. package/lib/buildSchema/getType/enum.test.js +80 -0
  31. package/lib/buildSchema/getType/getScalar.d.ts +1 -0
  32. package/lib/buildSchema/getType/getScalar.js +58 -0
  33. package/lib/buildSchema/getType/getTypeAsResolver.d.ts +10 -0
  34. package/lib/buildSchema/getType/getTypeAsResolver.js +26 -0
  35. package/lib/buildSchema/getType/index.d.ts +2 -0
  36. package/lib/buildSchema/getType/index.js +86 -0
  37. package/lib/buildSchema/index.d.ts +3 -0
  38. package/lib/buildSchema/index.js +17 -0
  39. package/lib/cleanResolvers.d.ts +1 -0
  40. package/lib/cleanResolvers.js +8 -0
  41. package/lib/errorHandler.d.ts +1 -0
  42. package/lib/errorHandler.js +42 -0
  43. package/lib/getApolloOptions/formatError.d.ts +1 -0
  44. package/lib/getApolloOptions/formatError.js +14 -0
  45. package/lib/getApolloOptions/index.d.ts +3 -0
  46. package/lib/getApolloOptions/index.js +26 -0
  47. package/lib/index.d.ts +12 -0
  48. package/lib/index.js +51 -0
  49. package/lib/pubsub.d.ts +3 -0
  50. package/lib/pubsub.js +12 -0
  51. package/lib/resolversSchemas/ResolverParamsInfo.d.ts +9 -0
  52. package/lib/resolversSchemas/ResolverParamsInfo.js +47 -0
  53. package/lib/resolversSchemas/getBasicResultQuery.d.ts +1 -0
  54. package/lib/resolversSchemas/getBasicResultQuery.js +24 -0
  55. package/lib/resolversSchemas/getDynamicFields.d.ts +2 -0
  56. package/lib/resolversSchemas/getDynamicFields.js +19 -0
  57. package/lib/resolversSchemas/getField.d.ts +1 -0
  58. package/lib/resolversSchemas/getField.js +50 -0
  59. package/lib/resolversSchemas/getField.test.d.ts +1 -0
  60. package/lib/resolversSchemas/getField.test.js +56 -0
  61. package/lib/resolversSchemas/getModelLoadedResolvers.d.ts +3 -0
  62. package/lib/resolversSchemas/getModelLoadedResolvers.js +21 -0
  63. package/lib/resolversSchemas/getStaticFields.d.ts +3 -0
  64. package/lib/resolversSchemas/getStaticFields.js +20 -0
  65. package/lib/resolversSchemas/index.d.ts +7 -0
  66. package/lib/resolversSchemas/index.js +9 -0
  67. package/lib/resolversSchemas/params.d.ts +5 -0
  68. package/lib/resolversSchemas/params.js +31 -0
  69. package/lib/resolversSchemas/params.test.d.ts +1 -0
  70. package/lib/resolversSchemas/params.test.js +131 -0
  71. package/lib/resolversSchemas/serializeSchema.d.ts +2 -0
  72. package/lib/resolversSchemas/serializeSchema.js +22 -0
  73. package/lib/resolversSchemas/serializeSchema.test.d.ts +1 -0
  74. package/lib/resolversSchemas/serializeSchema.test.js +56 -0
  75. package/lib/service/global.d.ts +10 -0
  76. package/lib/service/global.js +60 -0
  77. package/lib/service/index.d.ts +4 -0
  78. package/lib/service/index.js +20 -0
  79. package/lib/service/index.test.d.ts +1 -0
  80. package/lib/service/index.test.js +63 -0
  81. package/lib/service/middlewares.test.d.ts +1 -0
  82. package/lib/service/middlewares.test.js +125 -0
  83. package/lib/service/model.d.ts +14 -0
  84. package/lib/service/model.js +48 -0
  85. package/lib/service/model.test.d.ts +1 -0
  86. package/lib/service/model.test.js +126 -0
  87. package/lib/service/otherParams.d.ts +7 -0
  88. package/lib/service/otherParams.js +28 -0
  89. package/lib/service/subscription.d.ts +6 -0
  90. package/lib/service/subscription.js +43 -0
  91. package/lib/service/subscription.test.d.ts +1 -0
  92. package/lib/service/subscription.test.js +55 -0
  93. package/lib/startGraphQL.d.ts +2 -0
  94. package/lib/startGraphQL.js +43 -0
  95. package/lib/startGraphQL.test.d.ts +1 -0
  96. package/lib/startGraphQL.test.js +414 -0
  97. package/lib/startGraphiQL.d.ts +3 -0
  98. package/lib/startGraphiQL.js +207 -0
  99. package/lib/startWebsocket.d.ts +11 -0
  100. package/lib/startWebsocket.js +48 -0
  101. package/lib/startWebsocket.test.d.ts +1 -0
  102. package/lib/startWebsocket.test.js +303 -0
  103. package/lib/subscription/getChannelName.d.ts +1 -0
  104. package/lib/subscription/getChannelName.js +9 -0
  105. package/lib/subscription/getChannelName.test.d.ts +1 -0
  106. package/lib/subscription/getChannelName.test.js +26 -0
  107. package/lib/subscription/index.d.ts +3 -0
  108. package/lib/subscription/index.js +34 -0
  109. package/lib/types/index.d.ts +3 -0
  110. package/lib/types/index.js +19 -0
  111. package/lib/types/startGraphQL.d.ts +41 -0
  112. package/lib/types/startGraphQL.js +2 -0
  113. package/lib/types/subscription.d.ts +15 -0
  114. package/lib/types/subscription.js +2 -0
  115. package/lib/websockerViewer.d.ts +2 -0
  116. package/lib/websockerViewer.js +20 -0
  117. package/package.json +22 -31
  118. package/tsconfig.json +20 -0
  119. package/dist/index.cjs +0 -107852
  120. package/dist/index.d.ts +0 -116
  121. package/dist/index.js +0 -107825
@@ -0,0 +1,10 @@
1
+ export default function ({ resolver, getGraphQLType, options, model }: {
2
+ resolver: any;
3
+ getGraphQLType: any;
4
+ options: any;
5
+ model: any;
6
+ }): {
7
+ type: any;
8
+ args: {};
9
+ resolve(item: any, params: any, context: any, info: any): Promise<any>;
10
+ };
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const getArgs_1 = __importDefault(require("../getArgs"));
7
+ const errorHandler_1 = __importDefault(require("../../errorHandler"));
8
+ function default_1({ resolver, getGraphQLType, options, model }) {
9
+ const type = getGraphQLType(resolver.returns, options);
10
+ const args = (0, getArgs_1.default)(resolver.params);
11
+ return {
12
+ type,
13
+ args,
14
+ async resolve(item, params, context, info) {
15
+ try {
16
+ const result = await resolver.resolve(item, params, context, info);
17
+ return result;
18
+ }
19
+ catch (error) {
20
+ (0, errorHandler_1.default)(error, { context, resolver, options, model });
21
+ throw error;
22
+ }
23
+ },
24
+ };
25
+ }
26
+ exports.default = default_1;
@@ -0,0 +1,2 @@
1
+ import { StartGraphQLOptions } from '../../types/startGraphQL';
2
+ export default function getGraphQLType(type: any, options: StartGraphQLOptions): any;
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const isPlainObject_1 = __importDefault(require("lodash/isPlainObject"));
7
+ const isArray_1 = __importDefault(require("lodash/isArray"));
8
+ const graphql_1 = require("graphql");
9
+ const schema_1 = require("@orion-js/schema");
10
+ const getScalar_1 = __importDefault(require("./getScalar"));
11
+ const getTypeAsResolver_1 = __importDefault(require("./getTypeAsResolver"));
12
+ const getStaticFields_1 = require("../../resolversSchemas/getStaticFields");
13
+ const getDynamicFields_1 = require("../../resolversSchemas/getDynamicFields");
14
+ const getModelLoadedResolvers_1 = require("../../resolversSchemas/getModelLoadedResolvers");
15
+ function getGraphQLType(type, options) {
16
+ if (!type) {
17
+ throw new Error('Type is undefined');
18
+ }
19
+ if ((0, isArray_1.default)(type)) {
20
+ const graphQLType = getGraphQLType(type[0], options);
21
+ return new graphql_1.GraphQLList(graphQLType);
22
+ }
23
+ else if (typeof type === 'function' && type.getModel && type.__schemaId) {
24
+ return getGraphQLType(type.getModel(), options);
25
+ }
26
+ else if (!type._isFieldType && ((0, isPlainObject_1.default)(type) || type.__isModel)) {
27
+ const model = type.__isModel ? type : type.__model;
28
+ if (!model || !model.__isModel)
29
+ throw new Error('Type is not a Model');
30
+ if (model.graphQLType)
31
+ return model.graphQLType;
32
+ model.graphQLType = new graphql_1.GraphQLObjectType({
33
+ name: model.name,
34
+ fields: () => {
35
+ const fields = {};
36
+ for (const field of (0, getStaticFields_1.getStaticFields)(model)) {
37
+ try {
38
+ /**
39
+ * For fields that have custom "to client" resolvers and serverside are static
40
+ */
41
+ if (field.graphQLResolver) {
42
+ fields[field.key] = (0, getTypeAsResolver_1.default)({
43
+ resolver: field.graphQLResolver,
44
+ getGraphQLType,
45
+ options,
46
+ model
47
+ });
48
+ }
49
+ else {
50
+ fields[field.key] = {
51
+ type: getGraphQLType(field.type, options)
52
+ };
53
+ }
54
+ }
55
+ catch (error) {
56
+ throw new Error(`Error getting type for ${field.key} ${error.message}`);
57
+ }
58
+ }
59
+ for (const resolver of (0, getDynamicFields_1.getDynamicFields)(model)) {
60
+ try {
61
+ fields[resolver.key] = (0, getTypeAsResolver_1.default)({ resolver, getGraphQLType, options, model });
62
+ }
63
+ catch (error) {
64
+ throw new Error(`Error getting resolver type for resolver "${resolver.key}": ${error.message}`);
65
+ }
66
+ }
67
+ for (const resolver of (0, getModelLoadedResolvers_1.getModelLoadedResolvers)(model, options)) {
68
+ try {
69
+ fields[resolver.key] = (0, getTypeAsResolver_1.default)({ resolver, getGraphQLType, options, model });
70
+ }
71
+ catch (error) {
72
+ throw new Error(`Error getting resolver type for resolver "${resolver.key}": ${error.message}`);
73
+ }
74
+ }
75
+ return fields;
76
+ }
77
+ });
78
+ return model.graphQLType;
79
+ }
80
+ else {
81
+ const schemaType = (0, schema_1.getFieldType)(type);
82
+ const graphQLType = (0, getScalar_1.default)(schemaType);
83
+ return graphQLType;
84
+ }
85
+ }
86
+ exports.default = getGraphQLType;
@@ -0,0 +1,3 @@
1
+ import { GraphQLSchema } from 'graphql';
2
+ import { StartGraphQLOptions } from '../types/startGraphQL';
3
+ export default function (options: StartGraphQLOptions): Promise<GraphQLSchema>;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const graphql_1 = require("graphql");
7
+ const getQuery_1 = __importDefault(require("./getQuery"));
8
+ const getMutation_1 = __importDefault(require("./getMutation"));
9
+ const getSubscription_1 = __importDefault(require("./getSubscription"));
10
+ async function default_1(options) {
11
+ const query = await (0, getQuery_1.default)(options);
12
+ const mutation = await (0, getMutation_1.default)(options);
13
+ const subscription = await (0, getSubscription_1.default)(options);
14
+ const schema = new graphql_1.GraphQLSchema({ query, mutation, subscription });
15
+ return schema;
16
+ }
17
+ exports.default = default_1;
@@ -0,0 +1 @@
1
+ export declare const cleanResolvers: () => void;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cleanResolvers = void 0;
4
+ const cleanResolvers = function () {
5
+ global.graphQLSubscriptions = {};
6
+ global.graphQLResolvers = {};
7
+ };
8
+ exports.cleanResolvers = cleanResolvers;
@@ -0,0 +1 @@
1
+ export default function errorHandler(error: any, data: any): void;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const crypto_1 = __importDefault(require("crypto"));
7
+ const graphql_1 = require("graphql");
8
+ function errorHandler(error, data) {
9
+ const message = `Error in resolver "${data.name}" ${data.model ? `of model "${data.model.name}"` : ''}`;
10
+ const hash = crypto_1.default
11
+ .createHash('sha1')
12
+ .update(error.message, 'utf8')
13
+ .digest('hex')
14
+ .substring(0, 10);
15
+ error.hash = hash;
16
+ if (error && error.isOrionError) {
17
+ console.warn(message, error);
18
+ throw new graphql_1.GraphQLError(error.message, {
19
+ originalError: error,
20
+ extensions: {
21
+ isOrionError: !!error.isOrionError,
22
+ isValidationError: !!error.isValidationError,
23
+ code: error.code,
24
+ hash,
25
+ info: error.getInfo()
26
+ }
27
+ });
28
+ }
29
+ else {
30
+ console.error(message, error);
31
+ throw new graphql_1.GraphQLError(`${error.message} [${hash}]`, {
32
+ // originalError: error,
33
+ extensions: {
34
+ isOrionError: false,
35
+ isValidationError: false,
36
+ code: 'INTERNAL_SERVER_ERROR',
37
+ hash: hash
38
+ }
39
+ });
40
+ }
41
+ }
42
+ exports.default = errorHandler;
@@ -0,0 +1 @@
1
+ export default function (apolloError: any): any;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function default_1(apolloError) {
4
+ let response = { ...apolloError };
5
+ const error = apolloError.originalError;
6
+ if (error && error.isValidationError) {
7
+ response.validationErrors = error.validationErrors;
8
+ }
9
+ if (error && error.getInfo) {
10
+ response = error.getInfo();
11
+ }
12
+ return response;
13
+ }
14
+ exports.default = default_1;
@@ -0,0 +1,3 @@
1
+ import { StartGraphQLOptions } from '../types/startGraphQL';
2
+ import { ApolloServerOptions } from '@apollo/server';
3
+ export default function (options: StartGraphQLOptions): Promise<ApolloServerOptions<any>>;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const buildSchema_1 = __importDefault(require("../buildSchema"));
7
+ const formatError_1 = __importDefault(require("./formatError"));
8
+ const lodash_1 = require("lodash");
9
+ async function default_1(options) {
10
+ const schema = await (0, buildSchema_1.default)(options);
11
+ const passedOptions = (0, lodash_1.omit)(options, [
12
+ 'resolvers',
13
+ 'modelResolvers',
14
+ 'subscriptions',
15
+ 'executeGraphQLCache',
16
+ 'useGraphiql',
17
+ 'app',
18
+ 'pubsub'
19
+ ]);
20
+ return {
21
+ ...passedOptions,
22
+ schema,
23
+ formatError: formatError_1.default
24
+ };
25
+ }
26
+ exports.default = default_1;
package/lib/index.d.ts ADDED
@@ -0,0 +1,12 @@
1
+ import subscription from './subscription';
2
+ import startGraphQL from './startGraphQL';
3
+ import startGraphiQL from './startGraphiQL';
4
+ import resolversSchemas from './resolversSchemas';
5
+ import ResolverParamsInfo from './resolversSchemas/ResolverParamsInfo';
6
+ import serializeSchema from './resolversSchemas/serializeSchema';
7
+ import getBasicResultQuery from './resolversSchemas/getBasicResultQuery';
8
+ import * as GraphQL from 'graphql';
9
+ export { GraphQL, startGraphQL, startGraphiQL, resolversSchemas, ResolverParamsInfo, serializeSchema, subscription, getBasicResultQuery };
10
+ export * from './types';
11
+ export * from './service';
12
+ export * from './websockerViewer';
package/lib/index.js ADDED
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
26
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
27
+ };
28
+ var __importDefault = (this && this.__importDefault) || function (mod) {
29
+ return (mod && mod.__esModule) ? mod : { "default": mod };
30
+ };
31
+ Object.defineProperty(exports, "__esModule", { value: true });
32
+ exports.getBasicResultQuery = exports.subscription = exports.serializeSchema = exports.ResolverParamsInfo = exports.resolversSchemas = exports.startGraphiQL = exports.startGraphQL = exports.GraphQL = void 0;
33
+ const subscription_1 = __importDefault(require("./subscription"));
34
+ exports.subscription = subscription_1.default;
35
+ const startGraphQL_1 = __importDefault(require("./startGraphQL"));
36
+ exports.startGraphQL = startGraphQL_1.default;
37
+ const startGraphiQL_1 = __importDefault(require("./startGraphiQL"));
38
+ exports.startGraphiQL = startGraphiQL_1.default;
39
+ const resolversSchemas_1 = __importDefault(require("./resolversSchemas"));
40
+ exports.resolversSchemas = resolversSchemas_1.default;
41
+ const ResolverParamsInfo_1 = __importDefault(require("./resolversSchemas/ResolverParamsInfo"));
42
+ exports.ResolverParamsInfo = ResolverParamsInfo_1.default;
43
+ const serializeSchema_1 = __importDefault(require("./resolversSchemas/serializeSchema"));
44
+ exports.serializeSchema = serializeSchema_1.default;
45
+ const getBasicResultQuery_1 = __importDefault(require("./resolversSchemas/getBasicResultQuery"));
46
+ exports.getBasicResultQuery = getBasicResultQuery_1.default;
47
+ const GraphQL = __importStar(require("graphql"));
48
+ exports.GraphQL = GraphQL;
49
+ __exportStar(require("./types"), exports);
50
+ __exportStar(require("./service"), exports);
51
+ __exportStar(require("./websockerViewer"), exports);
@@ -0,0 +1,3 @@
1
+ import { PubSubEngine } from 'graphql-subscriptions';
2
+ export declare const setPubsub: (newPubsub: PubSubEngine) => void;
3
+ export declare const getPubsub: () => PubSubEngine;
package/lib/pubsub.js ADDED
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getPubsub = exports.setPubsub = void 0;
4
+ let pubsub = null;
5
+ const setPubsub = function (newPubsub) {
6
+ pubsub = newPubsub;
7
+ };
8
+ exports.setPubsub = setPubsub;
9
+ const getPubsub = function () {
10
+ return pubsub;
11
+ };
12
+ exports.getPubsub = getPubsub;
@@ -0,0 +1,9 @@
1
+ import { Model } from '@orion-js/models';
2
+ export interface ResolverMetaParam {
3
+ resolver: {
4
+ params: any;
5
+ returns: Model | any;
6
+ };
7
+ }
8
+ declare const _default: Model<any>;
9
+ export default _default;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const serializeSchema_1 = __importDefault(require("./serializeSchema"));
7
+ const getBasicResultQuery_1 = __importDefault(require("./getBasicResultQuery"));
8
+ const models_1 = require("@orion-js/models");
9
+ const resolvers_1 = require("@orion-js/resolvers");
10
+ const lodash_1 = require("lodash");
11
+ const resolverReturnsIsModel = (returns) => {
12
+ return returns && returns.__isModel;
13
+ };
14
+ exports.default = (0, models_1.createModel)({
15
+ name: 'ResolverParams',
16
+ schema: {
17
+ name: {
18
+ type: String
19
+ }
20
+ },
21
+ resolvers: {
22
+ params: (0, resolvers_1.resolver)({
23
+ returns: 'blackbox',
24
+ resolve: async function ({ resolver }) {
25
+ return await (0, serializeSchema_1.default)(resolver.params);
26
+ }
27
+ }),
28
+ result: (0, resolvers_1.resolver)({
29
+ returns: String,
30
+ resolve: async function ({ resolver }) {
31
+ const returns = (0, lodash_1.isArray)(resolver.returns) ? resolver.returns[0] : resolver.returns;
32
+ if (resolverReturnsIsModel(returns))
33
+ return returns.name;
34
+ return;
35
+ }
36
+ }),
37
+ basicResultQuery: (0, resolvers_1.resolver)({
38
+ returns: String,
39
+ resolve: async function ({ resolver }) {
40
+ const returns = (0, lodash_1.isArray)(resolver.returns) ? resolver.returns[0] : resolver.returns;
41
+ return await (0, getBasicResultQuery_1.default)({
42
+ type: resolverReturnsIsModel(returns) ? returns.getSchema() : ''
43
+ });
44
+ }
45
+ })
46
+ }
47
+ });
@@ -0,0 +1 @@
1
+ export default function getBasicQuery(field: any): Promise<any>;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const isArray_1 = __importDefault(require("lodash/isArray"));
7
+ const getStaticFields_1 = require("./getStaticFields");
8
+ async function getBasicQuery(field) {
9
+ if (!field.type)
10
+ return '';
11
+ if (((0, isArray_1.default)(field.type) && field.type[0].__model) || field.type.__model) {
12
+ const model = (0, isArray_1.default)(field.type) ? field.type[0].__model : field.type.__model;
13
+ const fields = [];
14
+ for (const field of (0, getStaticFields_1.getStaticFields)(model)) {
15
+ fields.push(await getBasicQuery(field));
16
+ }
17
+ const key = field.key ? `${field.key} ` : '';
18
+ return `${key}{ ${fields.join(' ')} }`;
19
+ }
20
+ else {
21
+ return field.key;
22
+ }
23
+ }
24
+ exports.default = getBasicQuery;
@@ -0,0 +1,2 @@
1
+ import { Model } from '@orion-js/models';
2
+ export declare function getDynamicFields(model: Model): any;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getDynamicFields = void 0;
4
+ function getDynamicFields(model) {
5
+ const resolvers = model.getResolvers();
6
+ if (!resolvers)
7
+ return [];
8
+ const keys = Object.keys(resolvers);
9
+ return keys
10
+ .map(key => {
11
+ const resolver = resolvers[key];
12
+ return {
13
+ ...resolver,
14
+ key
15
+ };
16
+ })
17
+ .filter(resolver => !resolver.private);
18
+ }
19
+ exports.getDynamicFields = getDynamicFields;
@@ -0,0 +1 @@
1
+ export default function getParams(field: any): any;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const isPlainObject_1 = __importDefault(require("lodash/isPlainObject"));
7
+ const isArray_1 = __importDefault(require("lodash/isArray"));
8
+ const schema_1 = require("@orion-js/schema");
9
+ const omit_1 = __importDefault(require("lodash/omit"));
10
+ const getScalar_1 = __importDefault(require("../buildSchema/getType/getScalar"));
11
+ const getStaticFields_1 = require("./getStaticFields");
12
+ async function getParams(field) {
13
+ let { type } = field;
14
+ if (typeof type === 'function' && type.getModel && type.__schemaId) {
15
+ const model = type.getModel();
16
+ return await getParams({ ...field, type: model });
17
+ }
18
+ else if ((0, isArray_1.default)(type)) {
19
+ const serialized = await getParams({ ...field, type: type[0] });
20
+ return {
21
+ ...serialized,
22
+ type: [serialized.type],
23
+ __graphQLType: `[${serialized.__graphQLType}]`
24
+ };
25
+ }
26
+ else if (!type._isFieldType && ((0, isPlainObject_1.default)(type) || type.__isModel)) {
27
+ const model = type.__isModel ? type : type.__model;
28
+ if (!model || !model.__isModel)
29
+ throw new Error('Type is not a Model');
30
+ const fields = {};
31
+ for (const field of (0, getStaticFields_1.getStaticFields)(model)) {
32
+ fields[field.key] = await getParams(field);
33
+ }
34
+ return {
35
+ ...(0, omit_1.default)(field, 'key'),
36
+ type: fields,
37
+ __graphQLType: model.name + 'Input'
38
+ };
39
+ }
40
+ else {
41
+ const schemaType = await (0, schema_1.getFieldType)(type);
42
+ const graphQLType = await (0, getScalar_1.default)(schemaType);
43
+ return {
44
+ ...(0, omit_1.default)(field, 'key'),
45
+ type: schemaType.name,
46
+ __graphQLType: graphQLType.name
47
+ };
48
+ }
49
+ }
50
+ exports.default = getParams;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const typed_model_1 = require("@orion-js/typed-model");
16
+ const getField_1 = __importDefault(require("./getField"));
17
+ describe('Field serialization', () => {
18
+ it('should return a valid serialization of the field', async () => {
19
+ const schema = {
20
+ name: {
21
+ type: String,
22
+ a: '1234'
23
+ }
24
+ };
25
+ const result = await (0, getField_1.default)(schema.name);
26
+ expect(result).toEqual({ type: 'string', a: '1234', __graphQLType: 'String' });
27
+ });
28
+ it('should pass field options with simple array fields', async () => {
29
+ const schema = {
30
+ name: {
31
+ type: [String],
32
+ a: '1234'
33
+ }
34
+ };
35
+ const result = await (0, getField_1.default)(schema.name);
36
+ expect(result.a).toEqual(schema.name.a);
37
+ });
38
+ it('Should allow serialization of typed models', async () => {
39
+ let Point = class Point {
40
+ };
41
+ __decorate([
42
+ (0, typed_model_1.Prop)({ label: 'Name' }),
43
+ __metadata("design:type", String)
44
+ ], Point.prototype, "name", void 0);
45
+ Point = __decorate([
46
+ (0, typed_model_1.TypedModel)()
47
+ ], Point);
48
+ const schema = {
49
+ point: {
50
+ type: Point
51
+ }
52
+ };
53
+ const result = await (0, getField_1.default)(schema.point);
54
+ expect(result.type.name).toEqual({ type: 'string', label: 'Name', __graphQLType: 'String' });
55
+ });
56
+ });
@@ -0,0 +1,3 @@
1
+ import { Model } from '@orion-js/models';
2
+ import { StartGraphQLOptions } from '../types/startGraphQL';
3
+ export declare function getModelLoadedResolvers(model: Model, options: StartGraphQLOptions): any[];
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getModelLoadedResolvers = void 0;
4
+ function getModelLoadedResolvers(model, options) {
5
+ if (!options.modelResolvers)
6
+ return [];
7
+ const resolvers = options.modelResolvers[model.name];
8
+ if (!resolvers)
9
+ return [];
10
+ const keys = Object.keys(resolvers);
11
+ return keys
12
+ .map(key => {
13
+ const resolver = resolvers[key];
14
+ return {
15
+ ...resolver,
16
+ key
17
+ };
18
+ })
19
+ .filter(resolver => !resolver.private);
20
+ }
21
+ exports.getModelLoadedResolvers = getModelLoadedResolvers;
@@ -0,0 +1,3 @@
1
+ import { Model } from '@orion-js/models';
2
+ import { SchemaNode } from '@orion-js/schema';
3
+ export declare function getStaticFields(model: Model): Array<SchemaNode>;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getStaticFields = void 0;
4
+ function getStaticFields(model) {
5
+ const schema = model.getSchema();
6
+ if (!schema)
7
+ return [];
8
+ const keys = Object.keys(schema).filter(key => !key.startsWith('__'));
9
+ return (keys
10
+ .map((key) => {
11
+ const field = schema[key];
12
+ return {
13
+ ...field,
14
+ key
15
+ };
16
+ })
17
+ // there is a compile error if we don't do this
18
+ .filter(field => !field.private));
19
+ }
20
+ exports.getStaticFields = getStaticFields;
@@ -0,0 +1,7 @@
1
+ declare const _default: {
2
+ params: import("@orion-js/resolvers").Resolver<({ mutation, name }: any, viewer: any) => Promise<{
3
+ resolver: import("@orion-js/resolvers").Resolver<import("@orion-js/resolvers").GlobalResolverResolve, undefined>;
4
+ name: any;
5
+ }>, undefined>;
6
+ };
7
+ export default _default;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const params_1 = __importDefault(require("./params"));
7
+ exports.default = {
8
+ params: params_1.default
9
+ };
@@ -0,0 +1,5 @@
1
+ declare const _default: import("@orion-js/resolvers").Resolver<({ mutation, name }: any, viewer: any) => Promise<{
2
+ resolver: import("@orion-js/resolvers").Resolver<import("@orion-js/resolvers").GlobalResolverResolve, undefined>;
3
+ name: any;
4
+ }>, undefined>;
5
+ export default _default;