@things-factory/shell 8.0.2 → 9.0.0-beta.12

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 (174) hide show
  1. package/_index.html +0 -1
  2. package/bin/things-factory-migration +6 -3
  3. package/client/themes/calendar-theme.css +3 -1
  4. package/client/themes/index.css +2 -1
  5. package/dist-server/index.d.ts +12 -12
  6. package/dist-server/index.js +12 -12
  7. package/dist-server/index.js.map +1 -1
  8. package/dist-server/initializers/database.js +4 -10
  9. package/dist-server/initializers/database.js.map +1 -1
  10. package/dist-server/initializers/ormconfig.d.ts +2 -0
  11. package/dist-server/initializers/ormconfig.js +30 -0
  12. package/dist-server/initializers/ormconfig.js.map +1 -0
  13. package/dist-server/middlewares/domain-middleware.js +2 -2
  14. package/dist-server/middlewares/domain-middleware.js.map +1 -1
  15. package/dist-server/middlewares/index.d.ts +1 -1
  16. package/dist-server/middlewares/index.js +3 -3
  17. package/dist-server/middlewares/index.js.map +1 -1
  18. package/dist-server/migrations/1000000000000-SeedDomain.js +4 -4
  19. package/dist-server/migrations/1000000000000-SeedDomain.js.map +1 -1
  20. package/dist-server/migrations/index.js.map +1 -1
  21. package/dist-server/process-cleaner.d.ts +1 -0
  22. package/dist-server/process-cleaner.js +92 -0
  23. package/dist-server/process-cleaner.js.map +1 -0
  24. package/dist-server/routers/domain-router.js +3 -3
  25. package/dist-server/routers/domain-router.js.map +1 -1
  26. package/dist-server/routers/global-router.js +6 -6
  27. package/dist-server/routers/global-router.js.map +1 -1
  28. package/dist-server/routers/index.d.ts +3 -3
  29. package/dist-server/routers/index.js +3 -3
  30. package/dist-server/routers/index.js.map +1 -1
  31. package/dist-server/schema.js +5 -4
  32. package/dist-server/schema.js.map +1 -1
  33. package/dist-server/server-dev.js +37 -39
  34. package/dist-server/server-dev.js.map +1 -1
  35. package/dist-server/server.js +33 -35
  36. package/dist-server/server.js.map +1 -1
  37. package/dist-server/service/attribute-set/attribute-set-item-type.js +3 -3
  38. package/dist-server/service/attribute-set/attribute-set-item-type.js.map +1 -1
  39. package/dist-server/service/attribute-set/attribute-set-mutation.d.ts +2 -2
  40. package/dist-server/service/attribute-set/attribute-set-mutation.js +16 -16
  41. package/dist-server/service/attribute-set/attribute-set-mutation.js.map +1 -1
  42. package/dist-server/service/attribute-set/attribute-set-query.d.ts +3 -3
  43. package/dist-server/service/attribute-set/attribute-set-query.js +15 -15
  44. package/dist-server/service/attribute-set/attribute-set-query.js.map +1 -1
  45. package/dist-server/service/attribute-set/attribute-set-type.d.ts +2 -2
  46. package/dist-server/service/attribute-set/attribute-set-type.js +5 -5
  47. package/dist-server/service/attribute-set/attribute-set-type.js.map +1 -1
  48. package/dist-server/service/attribute-set/attribute-set.d.ts +1 -1
  49. package/dist-server/service/attribute-set/attribute-set.js +2 -2
  50. package/dist-server/service/attribute-set/attribute-set.js.map +1 -1
  51. package/dist-server/service/attribute-set/index.d.ts +3 -3
  52. package/dist-server/service/attribute-set/index.js +5 -5
  53. package/dist-server/service/attribute-set/index.js.map +1 -1
  54. package/dist-server/service/common-types/index.d.ts +6 -6
  55. package/dist-server/service/common-types/index.js +6 -6
  56. package/dist-server/service/common-types/index.js.map +1 -1
  57. package/dist-server/service/common-types/list-param.js +2 -2
  58. package/dist-server/service/common-types/list-param.js.map +1 -1
  59. package/dist-server/service/common-types/log.js +2 -2
  60. package/dist-server/service/common-types/log.js.map +1 -1
  61. package/dist-server/service/common-types/scalar-object.d.ts +2 -1
  62. package/dist-server/service/common-types/scalar-object.js +2 -2
  63. package/dist-server/service/common-types/scalar-object.js.map +1 -1
  64. package/dist-server/service/directive-transaction/index.d.ts +1 -1
  65. package/dist-server/service/directive-transaction/index.js +1 -1
  66. package/dist-server/service/directive-transaction/index.js.map +1 -1
  67. package/dist-server/service/directive-transaction/transaction.js +2 -2
  68. package/dist-server/service/directive-transaction/transaction.js.map +1 -1
  69. package/dist-server/service/domain/domain-mutation.d.ts +2 -2
  70. package/dist-server/service/domain/domain-mutation.js +21 -21
  71. package/dist-server/service/domain/domain-mutation.js.map +1 -1
  72. package/dist-server/service/domain/domain-query.d.ts +3 -3
  73. package/dist-server/service/domain/domain-query.js +18 -18
  74. package/dist-server/service/domain/domain-query.js.map +1 -1
  75. package/dist-server/service/domain/domain-types.d.ts +2 -2
  76. package/dist-server/service/domain/domain-types.js +6 -6
  77. package/dist-server/service/domain/domain-types.js.map +1 -1
  78. package/dist-server/service/domain/domain.js +3 -3
  79. package/dist-server/service/domain/domain.js.map +1 -1
  80. package/dist-server/service/domain/index.d.ts +3 -3
  81. package/dist-server/service/domain/index.js +5 -5
  82. package/dist-server/service/domain/index.js.map +1 -1
  83. package/dist-server/service/index.d.ts +7 -7
  84. package/dist-server/service/index.js +16 -16
  85. package/dist-server/service/index.js.map +1 -1
  86. package/dist-server/service/subscription-data/data-resolver.d.ts +1 -1
  87. package/dist-server/service/subscription-data/data-resolver.js +4 -4
  88. package/dist-server/service/subscription-data/data-resolver.js.map +1 -1
  89. package/dist-server/service/subscription-data/data-types.d.ts +1 -1
  90. package/dist-server/service/subscription-data/data-types.js +5 -5
  91. package/dist-server/service/subscription-data/data-types.js.map +1 -1
  92. package/dist-server/service/subscription-data/index.d.ts +1 -1
  93. package/dist-server/service/subscription-data/index.js +2 -2
  94. package/dist-server/service/subscription-data/index.js.map +1 -1
  95. package/dist-server/tsconfig.tsbuildinfo +1 -1
  96. package/dist-server/typeorm/encrypt-transform.js +3 -3
  97. package/dist-server/typeorm/encrypt-transform.js.map +1 -1
  98. package/dist-server/utils/get-query-builder-from-list-params.d.ts +2 -2
  99. package/dist-server/utils/get-query-builder-from-list-params.js +5 -5
  100. package/dist-server/utils/get-query-builder-from-list-params.js.map +1 -1
  101. package/dist-server/utils/index.d.ts +8 -8
  102. package/dist-server/utils/index.js +8 -8
  103. package/dist-server/utils/index.js.map +1 -1
  104. package/dist-server/utils/list-param-adjuster.d.ts +1 -1
  105. package/dist-server/utils/list-param-adjuster.js.map +1 -1
  106. package/dist-server/utils/list-params-converter.d.ts +2 -2
  107. package/dist-server/utils/list-params-converter.js +2 -2
  108. package/dist-server/utils/list-params-converter.js.map +1 -1
  109. package/dist-server/utils/list-query-builder.d.ts +1 -1
  110. package/dist-server/utils/list-query-builder.js +7 -7
  111. package/dist-server/utils/list-query-builder.js.map +1 -1
  112. package/dist-server/utils/publish-progress.js +2 -2
  113. package/dist-server/utils/publish-progress.js.map +1 -1
  114. package/package.json +16 -19
  115. package/views/public/home.html +0 -1
  116. package/client/hot-client/hot.js +0 -140
  117. package/client/hot-client/index.js +0 -103
  118. package/client/hot-client/log.js +0 -44
  119. package/client/hot-client/socket.js +0 -63
  120. package/ormconfig.js +0 -31
  121. package/server/graphql-local-client.ts +0 -59
  122. package/server/index.ts +0 -13
  123. package/server/initializers/database.ts +0 -96
  124. package/server/initializers/naming-strategy.ts +0 -14
  125. package/server/middlewares/domain-middleware.ts +0 -60
  126. package/server/middlewares/index.ts +0 -43
  127. package/server/migrations/1000000000000-SeedDomain.ts +0 -37
  128. package/server/migrations/index.ts +0 -9
  129. package/server/pubsub-log-transport.ts +0 -59
  130. package/server/pubsub.ts +0 -84
  131. package/server/routers/domain-router.ts +0 -13
  132. package/server/routers/global-router.ts +0 -76
  133. package/server/routers/graphql-router.ts +0 -3
  134. package/server/routers/index.ts +0 -3
  135. package/server/schema.ts +0 -163
  136. package/server/server-dev.ts +0 -305
  137. package/server/server.ts +0 -296
  138. package/server/service/attribute-set/attribute-set-item-type.ts +0 -65
  139. package/server/service/attribute-set/attribute-set-mutation.ts +0 -125
  140. package/server/service/attribute-set/attribute-set-query.ts +0 -36
  141. package/server/service/attribute-set/attribute-set-type.ts +0 -46
  142. package/server/service/attribute-set/attribute-set.ts +0 -35
  143. package/server/service/attribute-set/index.ts +0 -6
  144. package/server/service/common-types/index.ts +0 -6
  145. package/server/service/common-types/list-param.ts +0 -61
  146. package/server/service/common-types/log.ts +0 -17
  147. package/server/service/common-types/object-ref.ts +0 -13
  148. package/server/service/common-types/scalar-any.ts +0 -44
  149. package/server/service/common-types/scalar-date.ts +0 -22
  150. package/server/service/common-types/scalar-object.ts +0 -15
  151. package/server/service/directive-transaction/index.ts +0 -1
  152. package/server/service/directive-transaction/transaction.ts +0 -40
  153. package/server/service/domain/domain-mutation.ts +0 -120
  154. package/server/service/domain/domain-query.ts +0 -48
  155. package/server/service/domain/domain-types.ts +0 -63
  156. package/server/service/domain/domain.ts +0 -147
  157. package/server/service/domain/index.ts +0 -6
  158. package/server/service/index.ts +0 -32
  159. package/server/service/subscription-data/data-resolver.ts +0 -37
  160. package/server/service/subscription-data/data-types.ts +0 -16
  161. package/server/service/subscription-data/index.ts +0 -4
  162. package/server/typeorm/encrypt-transform.ts +0 -70
  163. package/server/typeorm/get-data-encryption-key.ts +0 -13
  164. package/server/typeorm/json5-transform.ts +0 -26
  165. package/server/typeorm/round-transform.ts +0 -20
  166. package/server/utils/condition-builder.ts +0 -145
  167. package/server/utils/get-domain.ts +0 -226
  168. package/server/utils/get-query-builder-from-list-params.ts +0 -469
  169. package/server/utils/get-times-for-period.ts +0 -60
  170. package/server/utils/index.ts +0 -8
  171. package/server/utils/list-param-adjuster.ts +0 -21
  172. package/server/utils/list-params-converter.ts +0 -200
  173. package/server/utils/list-query-builder.ts +0 -120
  174. package/server/utils/publish-progress.ts +0 -23
@@ -1,37 +0,0 @@
1
- import { MigrationInterface, QueryRunner } from 'typeorm'
2
-
3
- import { getRepository } from '../initializers/database'
4
- import { Domain } from '../service/domain/domain'
5
-
6
- const SEED_DOMAINS = [
7
- {
8
- name: 'SYSTEM',
9
- subdomain: 'system',
10
- systemFlag: true
11
- }
12
- ]
13
-
14
- export class SeedDomain1000000000000 implements MigrationInterface {
15
- public async up(queryRunner: QueryRunner): Promise<any> {
16
- const repository = getRepository(Domain)
17
-
18
- return await Promise.all(
19
- SEED_DOMAINS.map(async domain => {
20
- await repository.save({
21
- ...domain
22
- })
23
- })
24
- )
25
- }
26
-
27
- public async down(queryRunner: QueryRunner): Promise<any> {
28
- const repository = getRepository(Domain)
29
-
30
- return await Promise.all(
31
- SEED_DOMAINS.reverse().map(async domain => {
32
- let recode = await repository.findOneBy({ subdomain: domain.subdomain })
33
- await repository.remove(recode)
34
- })
35
- )
36
- }
37
- }
@@ -1,9 +0,0 @@
1
- const glob = require('glob')
2
- const path = require('path')
3
-
4
- export var migrations = []
5
-
6
- glob.sync(path.resolve(__dirname, '.', '**', '*.js')).forEach(function(file) {
7
- if (file.indexOf('index.js') !== -1) return
8
- migrations = migrations.concat(Object.values(require(path.resolve(file))) || [])
9
- })
@@ -1,59 +0,0 @@
1
- import camelCase from 'lodash/camelCase'
2
- import Transport from 'winston-transport'
3
- import { pubsub } from './pubsub'
4
-
5
- /**
6
- * PubSubLogTransport is a custom Winston transport that publishes log messages to a GraphQL Pub/Sub topic.
7
- */
8
- export class PubSubLogTransport extends Transport {
9
- /**
10
- * The source object providing the log messages.
11
- * @type {object}
12
- */
13
- source: object
14
-
15
- /**
16
- * The Pub/Sub topic to which log messages will be published.
17
- * @type {string}
18
- */
19
- topic: string
20
-
21
- /**
22
- * The name of the field resolver for log messages.
23
- * @type {string}
24
- */
25
- resolver: string /* field resolver name */
26
-
27
- /**
28
- * Creates an instance of PubSubLogTransport.
29
- * @param {object} opts - Options for configuring the transport.
30
- * @param {string} opts.topic - The Pub/Sub topic to which log messages will be published.
31
- * @param {object} opts.source - The source object providing the log messages.
32
- * @param {string} opts.resolver - The name of the field resolver for log messages (default: derived from the topic).
33
- */
34
- constructor(opts) {
35
- super(opts)
36
-
37
- this.topic = opts.topic
38
- this.source = opts.source
39
- this.resolver = opts.resolver || camelCase(this.topic)
40
- }
41
-
42
- /**
43
- * Publishes a log message to the configured Pub/Sub topic.
44
- * @param {object} info - The log message information.
45
- * @param {Function} callback - The callback function to be called after publishing the message.
46
- */
47
- log(info, callback) {
48
- setImmediate(() => {
49
- pubsub.publish(this.topic, {
50
- [this.resolver]: {
51
- source: this.source,
52
- ...info
53
- }
54
- })
55
- })
56
-
57
- callback()
58
- }
59
- }
package/server/pubsub.ts DELETED
@@ -1,84 +0,0 @@
1
- /**
2
- * @module pubsub
3
- * @description
4
- * This module provides a Pub/Sub (Publish/Subscribe) mechanism for handling messages and events.
5
- * Developers can use various middleware options such as Redis, Redis Cluster
6
- * to implement Pub/Sub functionality.
7
- */
8
-
9
- import { createPubSub } from 'graphql-yoga'
10
- import { createRedisEventTarget } from '@graphql-yoga/redis-event-target'
11
- import Redis from 'ioredis'
12
-
13
- import { config, logger } from '@things-factory/env'
14
- import { PubSub } from 'type-graphql'
15
-
16
- const { middleware, host, port, nodes, options } = config.get('pubsub', {})
17
-
18
- let pubsub: PubSub
19
-
20
- switch (middleware) {
21
- case 'redis':
22
- const redisOption = {
23
- host,
24
- port,
25
- retryStrategy: times => {
26
- // reconnect after
27
- return Math.min(times * 50, 2000)
28
- },
29
- ...options
30
- }
31
- //@ts-ignore
32
- pubsub = createPubSub({
33
- eventTarget: createRedisEventTarget({
34
- publishClient: new Redis(redisOption),
35
- subscribeClient: new Redis(redisOption)
36
- })
37
- })
38
- break
39
- case 'redisCluster':
40
- const cluster = new Redis.Cluster(nodes, options)
41
- //@ts-ignore
42
- pubsub = createPubSub({
43
- eventTarget: createRedisEventTarget({
44
- publishClient: cluster,
45
- subscribeClient: cluster
46
- })
47
- })
48
- break
49
- default:
50
- pubsub = createPubSub()
51
- break
52
- }
53
-
54
- // kafka pubsub keeps connection and app port with 'ctrl+c' termination.
55
- const exitHandler = async evt => {
56
- //@ts-ignore
57
- if (pubsub.close) {
58
- try {
59
- //@ts-ignore
60
- await pubsub.close()
61
- } catch (err) {
62
- logger.error(err)
63
- }
64
- }
65
- }
66
-
67
- /*
68
- * exit events hint from https://stackoverflow.com/a/14032965/14539284
69
- */
70
-
71
- //do something when app is closing
72
- process.on('exit', exitHandler.bind(null, { name: 'exit', exit: true }))
73
-
74
- //catches ctrl+c event
75
- process.on('SIGINT', exitHandler.bind(null, { name: 'SIGINT', exit: true }))
76
-
77
- // catches "kill pid" (for example: nodemon restart)
78
- process.on('SIGUSR1', exitHandler.bind(null, { name: 'SIGUSR1', exit: true }))
79
- process.on('SIGUSR2', exitHandler.bind(null, { name: 'SIGUSR2', exit: true }))
80
-
81
- //catches uncaught exceptions
82
- // process.on('uncaughtException', exitHandler.bind(null, { name: 'uncaughtException', exit: true }))
83
-
84
- export { pubsub }
@@ -1,13 +0,0 @@
1
- import Router from 'koa-router'
2
-
3
- import { domainMiddleware } from '../middlewares/domain-middleware'
4
-
5
- export const domainPublicRouter = new Router()
6
- domainPublicRouter.use(async (context, next) => {
7
- await next()
8
- }, domainMiddleware)
9
-
10
- export const domainPrivateRouter = new Router()
11
- domainPrivateRouter.use(async (context, next) => {
12
- await next()
13
- }, domainMiddleware)
@@ -1,76 +0,0 @@
1
- import Router from 'koa-router'
2
- import requestIp from 'request-ip'
3
-
4
- import { getLicenseInfo } from '@things-factory/operato-license-checker'
5
- import { domainMiddleware } from '../middlewares/domain-middleware'
6
-
7
- var crawler = require('npm-license-crawler')
8
-
9
- export const globalPublicRouter = new Router()
10
- export const globalPrivateRouter = new Router()
11
-
12
- /* even though global private router, catch domain for information */
13
- globalPrivateRouter.use(domainMiddleware)
14
-
15
- if (process.env.NODE_ENV != 'production') {
16
- globalPublicRouter.get('/graphql', async (context, next) => {
17
- const initialEndpoint = context.request.href
18
-
19
- await context.render('graphql', { initialEndpoint })
20
- })
21
- }
22
-
23
- globalPublicRouter.get('/dependencies', async (context, next) => {
24
- const { dependencyGraph } = require('@things-factory/env')
25
-
26
- await context.render('dependencies-view-graphviz', { model: dependencyGraph })
27
- })
28
-
29
- globalPublicRouter.get('/license-info', (context, next) => {
30
- context.type = 'application/json'
31
- context.body = getLicenseInfo()
32
- })
33
-
34
- globalPublicRouter.get('/opensource-licenses', (context, next) => {
35
- return new Promise(function (resolve, reject) {
36
- var options = {
37
- start: ['.'],
38
- exclude: [],
39
- noColor: true,
40
- production: true,
41
- unknown: false
42
- }
43
-
44
- crawler.dumpLicenses(options, function (error, res) {
45
- if (error) {
46
- console.error('get:/opensource-licenses', error)
47
- reject(error)
48
- } else {
49
- context.type = 'application/json'
50
- context.body = res
51
- resolve(res)
52
- }
53
- })
54
- })
55
- })
56
-
57
- globalPublicRouter.get('/request-info', context => {
58
- context.body = `
59
- Client info. from "requestIp": ${requestIp.getClientIp(context.req)}
60
-
61
- Client info. from "context.ip": ${context.ip}
62
- Client info. from "context.protocol": ${context.protocol}
63
- Client info. from "context.host": ${context.host}
64
-
65
- Client info. from "x-forwarded-for": ${context.headers['x-forwarded-for']}
66
- Client info. from "x-forwarded-proto": ${context.headers['x-forwarded-proto']}
67
- Client info. from "x-forwarded-host": ${context.headers['x-forwarded-host']}
68
- Client info. from "x-forwarded-port": ${context.headers['x-forwarded-port']}
69
- `
70
- })
71
-
72
- /* Paths starting with /public are assumed to use the koa-view renderer. */
73
- globalPublicRouter.get('/public/(.[^.]*)', async (context, next) => {
74
- const { path } = context
75
- await context.render(path.substr(1))
76
- })
@@ -1,3 +0,0 @@
1
- import Router from 'koa-router'
2
-
3
- export const graphqlRouter = new Router()
@@ -1,3 +0,0 @@
1
- export * from './global-router'
2
- export * from './domain-router'
3
- export * from './graphql-router'
package/server/schema.ts DELETED
@@ -1,163 +0,0 @@
1
- import { GraphQLSchema } from 'graphql'
2
- import { GraphQLUpload } from 'graphql-upload/GraphQLUpload.js'
3
- import { buildSchema } from 'type-graphql'
4
- import { typeDefs as scalarTypeDefs, resolvers as scalarResolvers } from 'graphql-scalars'
5
-
6
- import { mergeSchemas } from '@graphql-tools/schema'
7
- import { loader, orderedModuleNames } from '@things-factory/env'
8
- import { deepMerge } from '@things-factory/utils'
9
- import { pubsub } from './pubsub'
10
-
11
- const path = require('path')
12
-
13
- /**
14
- * Generates and returns a GraphQL schema by merging schemas and resolvers from various modules.
15
- * @returns {GraphQLSchema} The merged GraphQL schema.
16
- */
17
- export async function schema() {
18
- const schemas = orderedModuleNames
19
- .map(dep => loader(dep).schema)
20
- .filter(schema => schema)
21
- .reduce(
22
- (sum, schema) => {
23
- const { typeDefs, resolvers, resolverClasses, directives } = sum
24
- let { typeDefs: sTypeDefs = {}, resolvers: sResolvers = {}, resolverClasses: sResolverClasses = [], directives: sDirectives = {} } = schema
25
-
26
- return {
27
- typeDefs: deepMerge(typeDefs, sTypeDefs),
28
- resolvers: deepMerge(resolvers, sResolvers),
29
- resolverClasses: [...resolverClasses, ...(sResolverClasses || [])],
30
- directives: deepMerge(directives, sDirectives)
31
- }
32
- },
33
- {
34
- typeDefs: {},
35
- resolvers: {},
36
- resolverClasses: [],
37
- directives: {}
38
- }
39
- )
40
-
41
- /* for typeDefs */
42
- var typeDefs = schemas.typeDefs
43
- var { queries = [], mutations = [], subscriptions = [], directives = [], types = [] } = typeDefs
44
-
45
- queries = [...queries, ...(typeDefs.Query || [])]
46
- mutations = [...mutations, ...(typeDefs.Mutation || [])]
47
- subscriptions = [...subscriptions, ...(typeDefs.Subscription || [])]
48
- directives = [...directives, ...(typeDefs.Directive || [])]
49
-
50
- delete typeDefs.Query
51
- delete typeDefs.Mutation
52
- delete typeDefs.Subscription
53
- delete typeDefs.Directive
54
-
55
- delete typeDefs.queries
56
- delete typeDefs.mutations
57
- delete typeDefs.subscriptions
58
- delete typeDefs.directives
59
- delete typeDefs.types
60
-
61
- const defs = {
62
- query: queries.length > 0 ? ['type Query {', ...queries, '}'].join('\n') : 'type Query { _ : Boolean }',
63
- mutation: mutations.length > 0 ? ['type Mutation {', ...mutations, '}'].join('\n') : 'type Mutation { _ : Boolean }',
64
- subscription: subscriptions.length > 0 ? ['type Subscription {', ...subscriptions, '}'].join('\n') : 'type Subscription { _ : Boolean }'
65
- }
66
-
67
- typeDefs = [
68
- ...scalarTypeDefs,
69
- `
70
- scalar Upload
71
- `,
72
- defs.query,
73
- defs.mutation,
74
- defs.subscription,
75
- ...directives,
76
- ...types,
77
- ...Object.values(typeDefs)
78
- ].filter(type => !!type)
79
-
80
- /* for resolvers */
81
- var { resolvers } = schemas
82
- var { queries = [], mutations = [], subscriptions = [], directives = [] } = resolvers
83
-
84
- var queryResolvers =
85
- queries.length > 0 &&
86
- queries.reduce((sum, query) => {
87
- return {
88
- ...sum,
89
- ...query
90
- }
91
- }, {})
92
-
93
- var mutationResolvers =
94
- mutations.length > 0 &&
95
- mutations.reduce((sum, mutation) => {
96
- return {
97
- ...sum,
98
- ...mutation
99
- }
100
- }, {})
101
-
102
- var subscriptionResolvers =
103
- subscriptions.length > 0 &&
104
- subscriptions.reduce((sum, subscription) => {
105
- return {
106
- ...sum,
107
- ...subscription
108
- }
109
- }, {})
110
-
111
- var directiveResolvers = directives.reduce((sum, directive) => {
112
- return {
113
- ...sum,
114
- ...directive
115
- }
116
- }, {})
117
-
118
- delete resolvers.queries
119
- delete resolvers.mutations
120
- delete resolvers.subscriptions
121
- delete resolvers.directives
122
-
123
- var Query = resolvers.Query || {}
124
- var Mutation = resolvers.Mutation || {}
125
- var Subscription = resolvers.Subscription || {}
126
- var Directive = resolvers.Directive || {}
127
-
128
- delete resolvers.Query
129
- delete resolvers.Mutation
130
- delete resolvers.Subscription
131
- delete resolvers.Directive
132
-
133
- resolvers = {
134
- Upload: GraphQLUpload as any,
135
- Query: deepMerge(Query, queryResolvers),
136
- Mutation: deepMerge(Mutation, mutationResolvers),
137
- Subscription: deepMerge(Subscription, subscriptionResolvers),
138
- ...scalarResolvers,
139
- ...resolvers
140
- }
141
-
142
- var merged = mergeSchemas({
143
- schemas: [
144
- await buildSchema({
145
- pubSub: pubsub,
146
- resolvers: schemas.resolverClasses,
147
- // automatically create `schema.gql` file with schema definition
148
- // in project's working directory
149
- // or create the file with schema in selected path
150
- emitSchemaFile: process.env.NODE_ENV == 'development'
151
- // emitSchemaFile: path.resolve(__dirname, 'snapshots/schema', 'schema.gql')
152
- })
153
- ],
154
- typeDefs,
155
- resolvers
156
- })
157
-
158
- Object.values(schemas.directives).map((directive: (schema: GraphQLSchema) => {}) => {
159
- merged = directive(merged) as any
160
- })
161
-
162
- return merged
163
- }