@common-stack/generate-plugin 6.0.1-alpha.9 → 6.0.2-alpha.2

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 (233) hide show
  1. package/.eslintrc.json +1 -1
  2. package/CHANGELOG.md +12 -0
  3. package/README.md +280 -10
  4. package/cde-config.json +86 -0
  5. package/executors.json +14 -0
  6. package/generators.json +15 -0
  7. package/lib/constants/index.cjs +2 -1
  8. package/lib/constants/index.cjs.map +1 -1
  9. package/lib/constants/index.d.ts +1 -0
  10. package/lib/constants/index.mjs +2 -1
  11. package/lib/constants/index.mjs.map +1 -1
  12. package/lib/executors/sort-package-json/executor.cjs +46 -0
  13. package/lib/executors/sort-package-json/executor.cjs.map +1 -0
  14. package/lib/executors/sort-package-json/executor.d.ts +4 -0
  15. package/lib/executors/sort-package-json/executor.mjs +46 -0
  16. package/lib/executors/sort-package-json/executor.mjs.map +1 -0
  17. package/lib/executors/sort-package-json/executor.spec.d.ts +1 -0
  18. package/lib/executors/sort-package-json/schema.json +9 -0
  19. package/lib/executors/update-deploy-version/executor.cjs +22 -0
  20. package/lib/executors/update-deploy-version/executor.cjs.map +1 -0
  21. package/lib/executors/update-deploy-version/executor.d.ts +4 -0
  22. package/lib/executors/update-deploy-version/executor.mjs +22 -0
  23. package/lib/executors/update-deploy-version/executor.mjs.map +1 -0
  24. package/lib/executors/update-deploy-version/executor.spec.d.ts +1 -0
  25. package/lib/executors/update-deploy-version/schema.json +14 -0
  26. package/lib/generators/add-backend/files/CHANGELOG.md +0 -0
  27. package/lib/generators/add-backend/files/Dockerfile +1 -1
  28. package/lib/generators/add-backend/files/package.json +1 -18
  29. package/lib/generators/add-backend/files/tsconfig.json +1 -1
  30. package/lib/generators/add-backend/files/webpack.config.js +6 -10
  31. package/lib/generators/add-backend/generator.cjs +21 -17
  32. package/lib/generators/add-backend/generator.cjs.map +1 -1
  33. package/lib/generators/add-backend/generator.d.ts +1 -0
  34. package/lib/generators/add-backend/generator.mjs +21 -17
  35. package/lib/generators/add-backend/generator.mjs.map +1 -1
  36. package/lib/generators/add-browser-package/files/package.json +2 -2
  37. package/lib/generators/add-browser-package/generator.cjs +14 -16
  38. package/lib/generators/add-browser-package/generator.cjs.map +1 -1
  39. package/lib/generators/add-browser-package/generator.d.ts +1 -0
  40. package/lib/generators/add-browser-package/generator.mjs +14 -16
  41. package/lib/generators/add-browser-package/generator.mjs.map +1 -1
  42. package/lib/generators/add-client-package/files/CHANGELOG.md +807 -0
  43. package/lib/generators/add-client-package/files/LICENSE +674 -0
  44. package/lib/generators/add-client-package/files/jest.config.js +13 -0
  45. package/lib/generators/add-client-package/files/package.json +30 -0
  46. package/lib/generators/add-client-package/files/rollup.config.mjs +29 -0
  47. package/lib/generators/add-client-package/files/src/components/index.tsx.template +1 -0
  48. package/lib/generators/add-client-package/files/src/index.ts.template +1 -0
  49. package/lib/generators/add-client-package/files/tsconfig.json +27 -0
  50. package/lib/generators/add-client-package/files/webpack.config.js +72 -0
  51. package/lib/generators/add-client-package/generator.cjs +17 -0
  52. package/lib/generators/add-client-package/generator.cjs.map +1 -0
  53. package/lib/generators/add-client-package/generator.d.ts +5 -0
  54. package/lib/generators/add-client-package/generator.mjs +17 -0
  55. package/lib/generators/add-client-package/generator.mjs.map +1 -0
  56. package/lib/generators/add-client-package/generator.spec.d.ts +1 -0
  57. package/lib/generators/add-client-package/schema.json +19 -0
  58. package/lib/generators/add-core-package/files/CHANGELOG.md +1076 -0
  59. package/lib/generators/add-core-package/files/LICENSE +39 -0
  60. package/lib/generators/add-core-package/files/jest.config.js +3 -0
  61. package/lib/generators/add-core-package/files/package.json +30 -0
  62. package/lib/generators/add-core-package/files/rollup.config.mjs +65 -0
  63. package/lib/generators/add-core-package/files/src/constants/index.ts.template +1 -0
  64. package/lib/generators/add-core-package/files/src/constants/types.ts.template +3 -0
  65. package/lib/generators/add-core-package/files/src/index.ts.template +2 -0
  66. package/lib/generators/add-core-package/files/src/types/index.ts.template +1 -0
  67. package/lib/generators/add-core-package/files/src/types/types.ts.template +17 -0
  68. package/lib/generators/add-core-package/files/tsconfig.json +22 -0
  69. package/lib/generators/add-core-package/files/webpack.config.js +53 -0
  70. package/lib/generators/add-core-package/generator.cjs +17 -0
  71. package/lib/generators/add-core-package/generator.cjs.map +1 -0
  72. package/lib/generators/add-core-package/generator.d.ts +5 -0
  73. package/lib/generators/add-core-package/generator.mjs +17 -0
  74. package/lib/generators/add-core-package/generator.mjs.map +1 -0
  75. package/lib/generators/add-core-package/generator.spec.d.ts +1 -0
  76. package/lib/generators/add-core-package/schema.json +19 -0
  77. package/lib/generators/add-frontend/frameworks/tailwindui/entry.client.tsx.template +90 -0
  78. package/lib/generators/add-frontend/frameworks/tailwindui/entry.server.tsx.template +238 -0
  79. package/lib/generators/add-frontend/frameworks/tailwindui/root.tsx.template +117 -0
  80. package/lib/generators/add-frontend/frameworks/tailwindui/tailwind.css +3 -0
  81. package/lib/generators/add-frontend/generator.cjs +60 -42
  82. package/lib/generators/add-frontend/generator.cjs.map +1 -1
  83. package/lib/generators/add-frontend/generator.d.ts +1 -0
  84. package/lib/generators/add-frontend/generator.mjs +60 -42
  85. package/lib/generators/add-frontend/generator.mjs.map +1 -1
  86. package/lib/generators/add-frontend/schema.json +1 -1
  87. package/lib/generators/add-frontend/templates/package.json +18 -76
  88. package/lib/generators/add-frontend/templates/postcss.config.js +6 -0
  89. package/lib/generators/add-frontend/templates/tailwind.config.ts.template +12 -0
  90. package/lib/generators/add-fullstack/files/jest-mongodb-config.js +3 -2
  91. package/lib/generators/add-fullstack/files/jest.config copy.js +27 -0
  92. package/lib/generators/add-fullstack/files/jest.config.base.js +43 -4
  93. package/lib/generators/add-fullstack/files/jest.config.base.mjs +99 -0
  94. package/lib/generators/add-fullstack/files/jest.config.mongodb.mjs +3 -0
  95. package/lib/generators/add-fullstack/files/lint-staged.config.js +4 -1
  96. package/lib/generators/add-fullstack/files/nx.json +18 -13
  97. package/lib/generators/add-fullstack/files/package.json +8 -8
  98. package/lib/generators/add-fullstack/files/tools/cli/helpers/util.js +1 -1
  99. package/lib/generators/add-fullstack/files/tools/deploy-cli/updateLernaVersion.js +1 -1
  100. package/lib/generators/add-fullstack/files/tools/prettier.config.js +8 -0
  101. package/lib/generators/add-fullstack/files/tools/rollup/rollupPluginGenerateJson.mjs +48 -0
  102. package/lib/generators/add-fullstack/files/tools/rollup/rollupPluginModifyLibFiles.mjs +410 -0
  103. package/lib/generators/add-fullstack/files/tools/runLint.mjs +15 -0
  104. package/lib/generators/add-fullstack/files/tools/sortPackageJson.mjs +0 -1
  105. package/lib/generators/add-fullstack/files/tools/update-dependencies.mjs +95 -0
  106. package/lib/generators/add-fullstack/files/tools/update-dependency-link.mjs +138 -0
  107. package/lib/generators/add-fullstack/files/tools/update-dependency-version.js +104 -89
  108. package/lib/generators/add-fullstack/files/tools/updateUtils.mjs +77 -0
  109. package/lib/generators/add-fullstack/generator.cjs +63 -2
  110. package/lib/generators/add-fullstack/generator.cjs.map +1 -1
  111. package/lib/generators/add-fullstack/generator.mjs +63 -2
  112. package/lib/generators/add-fullstack/generator.mjs.map +1 -1
  113. package/lib/generators/add-fullstack/schema.json +4 -0
  114. package/lib/generators/add-moleculer/files/package.json +7 -7
  115. package/lib/generators/add-moleculer/generator.cjs +14 -16
  116. package/lib/generators/add-moleculer/generator.cjs.map +1 -1
  117. package/lib/generators/add-moleculer/generator.d.ts +1 -0
  118. package/lib/generators/add-moleculer/generator.mjs +14 -16
  119. package/lib/generators/add-moleculer/generator.mjs.map +1 -1
  120. package/lib/generators/add-server-package/files/CHANGELOG.md +2599 -0
  121. package/lib/generators/add-server-package/files/LICENSE +674 -0
  122. package/lib/generators/add-server-package/files/jest.config.js +32 -0
  123. package/lib/generators/add-server-package/files/package.json +78 -0
  124. package/lib/generators/add-server-package/files/rollup.config.mjs +30 -0
  125. package/lib/generators/add-server-package/files/src/constants/constants.ts.template +62 -0
  126. package/lib/generators/add-server-package/files/src/constants/index.ts.template +1 -0
  127. package/lib/generators/add-server-package/files/src/constants/types.ts.template +21 -0
  128. package/lib/generators/add-server-package/files/src/index.ts.template +6 -0
  129. package/lib/generators/add-server-package/files/src/module.ts.template +6 -0
  130. package/lib/generators/add-server-package/files/tsconfig.json +27 -0
  131. package/lib/generators/add-server-package/generator.cjs +17 -0
  132. package/lib/generators/add-server-package/generator.cjs.map +1 -0
  133. package/lib/generators/add-server-package/generator.d.ts +5 -0
  134. package/lib/generators/add-server-package/generator.mjs +17 -0
  135. package/lib/generators/add-server-package/generator.mjs.map +1 -0
  136. package/lib/generators/add-server-package/generator.spec.d.ts +1 -0
  137. package/lib/generators/add-server-package/schema.json +19 -0
  138. package/lib/index.cjs +1 -1
  139. package/lib/index.d.ts +5 -0
  140. package/lib/index.mjs +1 -1
  141. package/package.json +4 -2
  142. package/project.json +12 -1
  143. package/rollup.config.mjs +8 -0
  144. package/src/constants/index.ts +2 -1
  145. package/src/executors/sort-package-json/executor.spec.ts +18 -0
  146. package/src/executors/sort-package-json/executor.ts +53 -0
  147. package/src/executors/sort-package-json/schema.d.ts +1 -0
  148. package/src/executors/sort-package-json/schema.json +9 -0
  149. package/src/executors/update-deploy-version/executor.spec.ts +18 -0
  150. package/src/executors/update-deploy-version/executor.ts +36 -0
  151. package/src/executors/update-deploy-version/schema.d.ts +3 -0
  152. package/src/executors/update-deploy-version/schema.json +14 -0
  153. package/src/generators/add-backend/generator.ts +8 -4
  154. package/src/generators/add-browser-package/generator.ts +7 -6
  155. package/src/generators/add-client-package/generator.spec.ts +20 -0
  156. package/src/generators/add-client-package/generator.ts +24 -0
  157. package/src/generators/add-client-package/schema.d.ts +4 -0
  158. package/src/generators/add-client-package/schema.json +19 -0
  159. package/src/generators/add-core-package/generator.spec.ts +20 -0
  160. package/src/generators/add-core-package/generator.ts +24 -0
  161. package/src/generators/add-core-package/schema.d.ts +4 -0
  162. package/src/generators/add-core-package/schema.json +19 -0
  163. package/src/generators/add-frontend/frameworks/tailwindui/entry.client.tsx.template +90 -0
  164. package/src/generators/add-frontend/frameworks/tailwindui/entry.server.tsx.template +238 -0
  165. package/src/generators/add-frontend/frameworks/tailwindui/root.tsx.template +117 -0
  166. package/src/generators/add-frontend/frameworks/tailwindui/tailwind.css +3 -0
  167. package/src/generators/add-frontend/generator.ts +24 -2
  168. package/src/generators/add-frontend/schema.json +1 -1
  169. package/src/generators/add-fullstack/files/jest-mongodb-config.js +3 -2
  170. package/src/generators/add-fullstack/files/jest.config copy.js +27 -0
  171. package/src/generators/add-fullstack/files/jest.config.base.js +43 -4
  172. package/src/generators/add-fullstack/files/jest.config.base.mjs +99 -0
  173. package/src/generators/add-fullstack/files/jest.config.mongodb.mjs +3 -0
  174. package/src/generators/add-fullstack/files/lint-staged.config.js +4 -1
  175. package/src/generators/add-fullstack/files/nx.json +18 -13
  176. package/src/generators/add-fullstack/files/package.json +8 -8
  177. package/src/generators/add-fullstack/files/tools/cli/helpers/util.js +1 -1
  178. package/src/generators/add-fullstack/files/tools/deploy-cli/updateLernaVersion.js +1 -1
  179. package/src/generators/add-fullstack/files/tools/prettier.config.js +8 -0
  180. package/src/generators/add-fullstack/files/tools/rollup/rollupPluginGenerateJson.mjs +48 -0
  181. package/src/generators/add-fullstack/files/tools/rollup/rollupPluginModifyLibFiles.mjs +410 -0
  182. package/src/generators/add-fullstack/files/tools/runLint.mjs +15 -0
  183. package/src/generators/add-fullstack/files/tools/sortPackageJson.mjs +0 -1
  184. package/src/generators/add-fullstack/files/tools/update-dependencies.mjs +95 -0
  185. package/src/generators/add-fullstack/files/tools/update-dependency-link.mjs +138 -0
  186. package/src/generators/add-fullstack/files/tools/update-dependency-version.js +104 -89
  187. package/src/generators/add-fullstack/files/tools/updateUtils.mjs +77 -0
  188. package/src/generators/add-fullstack/generator.ts +83 -1
  189. package/src/generators/add-fullstack/schema.d.ts +1 -0
  190. package/src/generators/add-fullstack/schema.json +4 -0
  191. package/src/generators/add-moleculer/files/package.json +7 -7
  192. package/src/generators/add-moleculer/generator.ts +7 -6
  193. package/src/generators/add-server-package/generator.spec.ts +20 -0
  194. package/src/generators/add-server-package/generator.ts +24 -0
  195. package/src/generators/add-server-package/schema.d.ts +4 -0
  196. package/src/generators/add-server-package/schema.json +19 -0
  197. package/src/index.ts +5 -0
  198. package/lib/generators/add-backend/files/knexfile.js +0 -63
  199. package/lib/generators/add-backend/files/src/api/remote-config.ts.template +0 -11
  200. package/lib/generators/add-backend/files/src/api/resolver.ts.template +0 -15
  201. package/lib/generators/add-backend/files/src/api/scalar.ts.template +0 -16
  202. package/lib/generators/add-backend/files/src/api/schema-builder.ts.template +0 -189
  203. package/lib/generators/add-backend/files/src/api/utils.ts.template +0 -44
  204. package/lib/generators/add-backend/files/src/config/moleculer.config.ts.template +0 -228
  205. package/lib/generators/add-backend/files/src/connectors/connection-broker.ts.template +0 -80
  206. package/lib/generators/add-backend/files/src/connectors/graphql-pubsub-connector.ts.template +0 -43
  207. package/lib/generators/add-backend/files/src/connectors/mongo-connector.ts.template +0 -78
  208. package/lib/generators/add-backend/files/src/connectors/nats-connector.ts.template +0 -82
  209. package/lib/generators/add-backend/files/src/connectors/redis-connector.ts.template +0 -73
  210. package/lib/generators/add-backend/files/src/express-app.ts.template +0 -67
  211. package/lib/generators/add-backend/files/src/interfaces/index.ts.template +0 -1
  212. package/lib/generators/add-backend/files/src/interfaces/module-interface.ts.template +0 -16
  213. package/lib/generators/add-backend/files/src/main.spec.ts.template +0 -129
  214. package/lib/generators/add-backend/files/src/middleware/__tests__/cors.test.ts.template +0 -12
  215. package/lib/generators/add-backend/files/src/middleware/cors.ts.template +0 -31
  216. package/lib/generators/add-backend/files/src/middleware/error.ts.template +0 -63
  217. package/lib/generators/add-backend/files/src/middleware/moleculer-inter-namespace.ts.template +0 -60
  218. package/lib/generators/add-backend/files/src/middleware/persistedQuery.ts.template +0 -40
  219. package/lib/generators/add-backend/files/src/middleware/sentry.ts.template +0 -9
  220. package/lib/generators/add-backend/files/src/middleware/services.ts.template +0 -16
  221. package/lib/generators/add-backend/files/src/middleware/tracer.ts.template +0 -24
  222. package/lib/generators/add-backend/files/src/modules/auth/schema/auth-schema.graphql +0 -25
  223. package/lib/generators/add-backend/files/src/server-setup/graphql-server.ts.template +0 -185
  224. package/lib/generators/add-backend/files/src/server-setup/graphql-subscription-server.ts.template +0 -113
  225. package/lib/generators/add-backend/files/src/server-setup/graphql-ws.ts.template +0 -158
  226. package/lib/generators/add-backend/files/src/server-setup/mongodb-migration-update.ts.template +0 -47
  227. package/lib/generators/add-backend/files/src/server-setup/utils.ts.template +0 -43
  228. package/lib/generators/add-backend/files/src/server-setup/websocket-multipath-update.ts.template +0 -88
  229. package/lib/generators/add-backend/files/src/stack-server.ts.template +0 -277
  230. package/lib/generators/add-backend/files/src/utils/migrations.ts.template +0 -32
  231. package/lib/generators/add-backend/files/uploads/3986781.ppt +0 -0
  232. package/lib/generators/add-fullstack/files/tools/update-dependency-link.js +0 -107
  233. package/src/generators/add-fullstack/files/tools/update-dependency-link.js +0 -107
@@ -1,189 +0,0 @@
1
- /* eslint-disable class-methods-use-this */
2
- /* eslint-disable no-useless-constructor */
3
- /* eslint-disable import/no-extraneous-dependencies */
4
- import * as fs from 'fs';
5
- import { GraphQLSchema, OperationDefinitionNode } from 'graphql';
6
- import { stitchSchemas } from '@graphql-tools/stitch';
7
- import { makeExecutableSchema } from '@graphql-tools/schema';
8
- import { linkToExecutor } from '@graphql-tools/links';
9
- import { introspectSchema, wrapSchema } from '@graphql-tools/wrap';
10
- // import { transformSchema } from '@graphql-tools/delegate';
11
- import * as ws from 'ws';
12
- import { getMainDefinition } from '@apollo/client/utilities';
13
- import { WebSocketLink } from '@apollo/client/link/ws';
14
- import { split } from '@apollo/client/index.js';
15
- import { IGraphqlShieldRules, logger } from '@common-stack/server-core';
16
- import { HttpLink } from '@apollo/client/link/http';
17
- import * as fetch from 'isomorphic-fetch';
18
- import { CdmLogger } from '@cdm-logger/core';
19
- import { shield } from 'graphql-shield';
20
- import { applyMiddleware } from 'graphql-middleware';
21
- import { remoteSchemaDetails } from './remote-config';
22
- import rootSchemaDef from './root-schema.graphqls';
23
- import { resolvers as rootResolver } from './resolver';
24
- import { attachDirectiveResolvers } from './utils';
25
-
26
- interface IGraphqlOptions {
27
- schema: string | string[];
28
- resolvers: any;
29
- directives: any[];
30
- directiveResolvers: { [key: string]: any };
31
- middlewares: any[];
32
- rules?: IGraphqlShieldRules;
33
- logger: CdmLogger.ILogger;
34
- }
35
- export class GatewaySchemaBuilder {
36
- constructor(private options: IGraphqlOptions) {}
37
-
38
- public async build(): Promise<GraphQLSchema> {
39
- let gatewaySchema;
40
- let ownSchema;
41
- try {
42
- ownSchema = this.createOwnSchema();
43
- const remoteSchema = await this.load();
44
- // techSchema = this.patchSchema(techSchema, 'TechService');
45
-
46
- gatewaySchema = stitchSchemas({
47
- subschemas: [ownSchema],
48
- });
49
-
50
- // Apply middleware to the schema
51
- if (this.options.middlewares && this.options.middlewares.length > 0) {
52
- gatewaySchema = applyMiddleware(
53
- gatewaySchema,
54
- ...this.options.middlewares,
55
- shield(this.options.rules || {}, {
56
- allowExternalErrors: true,
57
- }),
58
- );
59
- }
60
- // TODO after updating graphql-tools to v8
61
- // addErrorLoggingToSchema(schema, { log: (e) => logger.error(e as Error) });
62
- } catch (err) {
63
- logger.error('[Graphql Schema Errors] when building schema:', err.message);
64
- gatewaySchema = ownSchema;
65
- }
66
-
67
- return gatewaySchema;
68
- }
69
-
70
- private async load() {
71
- const schemas = [];
72
- // eslint-disable-next-line no-plusplus
73
- for (let i = 0; i < remoteSchemaDetails.length; i++) {
74
- // eslint-disable-next-line no-await-in-loop
75
- const schema = await this.loadRemoteSchema(remoteSchemaDetails[i]);
76
- schemas.push(schema);
77
- }
78
- return schemas;
79
- }
80
-
81
- private async createRemoteSchema(service: string, iteration?: number): Promise<GraphQLSchema> {
82
- logger.info('Fetch service [%s] iteration [%s]', service, iteration);
83
- const services = remoteSchemaDetails;
84
- if (!services.length) {
85
- console.warn(`Service ${services} is undefined`);
86
- if (iteration && iteration > 2) {
87
- return Promise.reject(`tried upto ${iteration} attempts, now failing...`);
88
- }
89
- return new Promise<GraphQLSchema>((resolve, reject) => {
90
- const timeout = iteration ? 1000 * iteration : 1000;
91
- logger.info('Wait for service startup %s', timeout);
92
- setTimeout(() => {
93
- this.createRemoteSchema(service, iteration ? iteration + 1 : 1)
94
- .then(resolve)
95
- .catch(reject);
96
- }, timeout);
97
- });
98
- }
99
- // instead need to loop it
100
- // https://github.com/j-colter/graphql-gateway/blob/9c64d90a74727d2002d10b06f47e1f4a316070fc/src/schema.js#L50
101
- const url = services[0].uri;
102
- logger.info('fetch service [%s]', url);
103
- // 1. Create apollo Link that's connected to the underlying GraphQL API
104
- const link = new HttpLink({ uri: url, fetch });
105
- const executor: any = linkToExecutor(link);
106
- // 2. Retrieve schema definition of the underlying GraphQL API
107
- const remoteSchema = await introspectSchema(link as any);
108
-
109
- // 3. Create the executable schema based on schema definition and Apollo Link
110
- return wrapSchema({
111
- schema: remoteSchema,
112
- executor,
113
- });
114
- }
115
-
116
- private async loadRemoteSchema({ uri, wsUri }) {
117
- try {
118
- const httpLink = new HttpLink({ uri, fetch });
119
- let link = null;
120
-
121
- if (wsUri) {
122
- const wsLink = new WebSocketLink({
123
- uri: wsUri,
124
- options: {
125
- reconnect: true,
126
- },
127
- webSocketImpl: ws,
128
- });
129
- link = split(
130
- // split based on operatino type
131
- ({ query }) => {
132
- const { kind, operation } = getMainDefinition(query) as OperationDefinitionNode;
133
- return kind === 'OperationDefinition' && operation === 'subscription';
134
- },
135
- wsLink,
136
- httpLink,
137
- );
138
- } else {
139
- link = httpLink;
140
- }
141
- const executor: any = linkToExecutor(link);
142
- const remoteSchema = await introspectSchema(link);
143
- const executableSchema = wrapSchema({
144
- schema: remoteSchema,
145
- executor,
146
- });
147
- return executableSchema;
148
- } catch (err) {
149
- this.options.logger.error('fetching schema error: ', err);
150
- return {};
151
- }
152
- }
153
-
154
- // disabled after updating to apollo-client to v3 and graphql-tools to v8
155
- // private patchSchema(schema: GraphQLSchema, systemName: string) {
156
- // return transformSchema(schema, [
157
- // new RenameTypes((name: string) => (name === 'StatusInfo' ? `${systemName}StatusInfo` : undefined)),
158
- // new RenameRootFields((_operation: string, name: string) =>
159
- // name === 'status'
160
- // ? `${systemName.substring(0, 1).toLowerCase()}${systemName.substring(1)}Status`
161
- // : name,
162
- // ),
163
- // ]);
164
- // }
165
-
166
- private createOwnSchema(): GraphQLSchema {
167
- const typeDefs = [rootSchemaDef, this.options.schema].join('\n');
168
- if (__DEV__) {
169
- import('../modules/module').then(({ ExternalModules }) => {
170
- const externalSchema = ExternalModules?.schemas || ``;
171
- const writeData = `${externalSchema}`;
172
- fs.writeFileSync('./generated-schema.graphql', writeData);
173
- });
174
- }
175
- let mergedSchema = makeExecutableSchema({
176
- resolvers: [rootResolver, this.options.resolvers],
177
- typeDefs,
178
- resolverValidationOptions: {
179
- requireResolversForResolveType: 'warn',
180
- },
181
- });
182
- // mergedSchema = this.options.directives.reduce((curSchema,transform) => transform(curSchema), mergedSchema);
183
- if (this.options.directiveResolvers && Object.keys(this.options.directiveResolvers).length !== 0) {
184
- this.options.logger.warn('directiveResolvers deprecated replaced with directives');
185
- mergedSchema = attachDirectiveResolvers(mergedSchema, this.options.directiveResolvers);
186
- }
187
- return mergedSchema;
188
- }
189
- }
@@ -1,44 +0,0 @@
1
- import { defaultFieldResolver, GraphQLSchema } from 'graphql';
2
- import { mapSchema, MapperKind, getDirectives } from '@graphql-tools/utils';
3
-
4
- export function attachDirectiveResolvers(
5
- schema: GraphQLSchema,
6
- directiveResolvers: {[key: string]: Function},
7
- ): GraphQLSchema {
8
- // ... argument validation ...
9
-
10
- return mapSchema(schema, {
11
- [MapperKind.OBJECT_FIELD]: (fieldConfig) => {
12
- const newFieldConfig = { ...fieldConfig };
13
-
14
- const directives = getDirectives(schema, fieldConfig);
15
- for (const directive of directives) {
16
- const directiveName = directive.name;
17
- if (directiveResolvers[directiveName]) {
18
- const resolver = directiveResolvers[directiveName];
19
- const originalResolver =
20
- newFieldConfig.resolve != null ? newFieldConfig.resolve : defaultFieldResolver;
21
- const directiveArgs = directive.args;
22
- newFieldConfig.resolve = (source, originalArgs, context, info) => {
23
- return resolver(
24
- () =>
25
- new Promise((resolve, reject) => {
26
- const result = originalResolver(source, originalArgs, context, info);
27
- if (result instanceof Error) {
28
- reject(result);
29
- }
30
- resolve(result);
31
- }),
32
- source,
33
- directiveArgs,
34
- context,
35
- info,
36
- );
37
- };
38
- }
39
- }
40
-
41
- return newFieldConfig;
42
- },
43
- });
44
- }
@@ -1,228 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-empty-function */
2
- import { BrokerOptions, Errors } from 'moleculer';
3
- import { config } from './env-config';
4
-
5
- /**
6
- * Moleculer ServiceBroker configuration file
7
- *
8
- * More info about options:
9
- * https://moleculer.services/docs/0.14/configuration.html
10
- *
11
- *
12
- * Overwrite options in production:
13
- * ================================
14
- * You can overwrite any option with environment variables.
15
- * For example to overwrite the 'logLevel', use `LOGLEVEL=warn` env var.
16
- * To overwrite a nested parameter, e.g. retryPolicy.retries, use `RETRYPOLICY_RETRIES=10` env var.
17
- *
18
- * To overwrite broker’s deeply nested default options, which are not presented in 'moleculer.config.ts',
19
- * via environment variables, use the `MOL_` prefix and double underscore `__` for nested properties in .env file.
20
- * For example, to set the cacher prefix to `MYCACHE`, you should declare an env var as `MOL_CACHER__OPTIONS__PREFIX=MYCACHE`.
21
- */
22
- const brokerConfig: BrokerOptions = {
23
- // Namespace of nodes to segment your nodes on the same network.
24
- namespace: config.NAMESPACE,
25
- // namespace: null,
26
- // Unique node identifier. Must be unique in a namespace.
27
- // nodeID: config.CONNECTION_ID,
28
-
29
- // Enable/disable logging or use custom logger. More info: https://moleculer.services/docs/0.14/logging.html
30
- // Available logger types: 'Console', 'File', 'Pino', 'Winston', 'Bunyan', 'debug', 'Log4js', 'Datadog'
31
- logger: {
32
- type: 'Console',
33
- options: {
34
- // Using colors on the output
35
- colors: true,
36
- // Print module names with different colors (like docker-compose for containers)
37
- moduleColors: false,
38
- // Line formatter. It can be 'json', 'short',
39
- // 'simple', 'full', a `Function` or a template string like '{timestamp} {level} {nodeID}/{mod}: {msg}'
40
- formatter: 'full',
41
- // Custom object printer. If not defined, it uses the `util.inspect` method.
42
- objectPrinter: null,
43
- // Auto-padding the module name in order to messages begin at the same column.
44
- autoPadding: false,
45
- },
46
- },
47
- // Default log level for built-in console logger. It can be overwritten in logger options above.
48
- // Available values: trace, debug, info, warn, error, fatal
49
- logLevel: config.HEMERA_LOG_LEVEL as any,
50
-
51
- // Define transporter.
52
- // More info: https://moleculer.services/docs/0.14/networking.html
53
- // Note: During the development, you don't need to define it because all services will be loaded locally.
54
- // In production you can set it via `TRANSPORTER=nats://localhost:4222` environment variable.
55
- transporter:
56
- config.NODE_ENV === 'development'
57
- ? 'TCP'
58
- : {
59
- type: 'NATS',
60
- options: {
61
- url: config.NATS_URL,
62
- user: config.NATS_USER,
63
- pass: config.NATS_PW,
64
- reconnectTimeWait: 1000,
65
- },
66
- },
67
-
68
- // Define a cacher.
69
- // More info: https://moleculer.services/docs/0.14/caching.html
70
- // cacher: {
71
- // type: 'Redis',
72
- // enabled: false,
73
- // options: {
74
-
75
- // // Redis settings
76
- // redis: {
77
-
78
- // }
79
- // }
80
- // },
81
-
82
- // Define a serializer.
83
- // Available values: 'JSON', 'Avro', 'ProtoBuf', 'MsgPack', 'Notepack', 'Thrift'.
84
- // More info: https://moleculer.services/docs/0.13/networking.html
85
- serializer: 'JSON',
86
-
87
- // Number of milliseconds to wait before reject a request with a RequestTimeout error. Disabled: 0
88
- requestTimeout: 10 * 1000,
89
-
90
- // Retry policy settings. More info: https://moleculer.services/docs/0.13/fault-tolerance.html#Retry
91
- retryPolicy: {
92
- // Enable feature
93
- enabled: false,
94
- // Count of retries
95
- retries: 5,
96
- // First delay in milliseconds.
97
- delay: 100,
98
- // Maximum delay in milliseconds.
99
- maxDelay: 1000,
100
- // Backoff factor for delay. 2 means exponential backoff.
101
- factor: 2,
102
- // A function to check failed requests.
103
- check: (err: Errors.MoleculerRetryableError) => err && !!err.retryable,
104
- },
105
-
106
- // Limit of calling level. If it reaches the limit, broker will throw an MaxCallLevelError error. (Infinite loop protection)
107
- maxCallLevel: 100,
108
-
109
- // Number of seconds to send heartbeat packet to other nodes.
110
- heartbeatInterval: 5,
111
- // Number of seconds to wait before setting node to unavailable status.
112
- heartbeatTimeout: 15,
113
-
114
- // tslint:disable-next-line:max-line-length
115
- // Tracking requests and waiting for running requests before shutdowning. More info: https://moleculer.services/docs/0.13/fault-tolerance.html
116
- tracking: {
117
- // Enable feature
118
- enabled: false,
119
- // Number of milliseconds to wait before shutdowning the process
120
- shutdownTimeout: 5000,
121
- },
122
-
123
- // Disable built-in request & emit balancer. (Transporter must support it, as well.)
124
- disableBalancer: false,
125
-
126
- // Settings of Service Registry. More info: https://moleculer.services/docs/0.14/registry.html
127
- registry: {
128
- // Define balancing strategy. More info: https://moleculer.services/docs/0.14/balancing.html
129
- // Available values: 'RoundRobin', 'Random', 'CpuUsage', 'Latency'
130
- strategy: 'RoundRobin',
131
- // Enable local action call preferring.
132
- preferLocal: true,
133
- },
134
-
135
- // Settings of Circuit Breaker. More info: https://moleculer.services/docs/0.14/fault-tolerance.html#Circuit-Breaker
136
- circuitBreaker: {
137
- // Enable feature
138
- enabled: false,
139
- // Threshold value. 0.5 means that 50% should be failed for tripping.
140
- threshold: 0.5,
141
- // Minimum request count. Below it, CB does not trip.
142
- minRequestCount: 20,
143
- // Number of seconds for time window.
144
- windowTime: 60,
145
- // Number of milliseconds to switch from open to half-open state
146
- halfOpenTime: 10 * 1000,
147
- // A function to check failed requests.
148
- check: (err: Errors.MoleculerRetryableError) => err && err.code >= 500,
149
- },
150
-
151
- // Settings of bulkhead feature. More info: https://moleculer.services/docs/0.14/fault-tolerance.html#Bulkhead
152
- bulkhead: {
153
- // Enable feature.
154
- enabled: false,
155
- // Maximum concurrent executions.
156
- concurrency: 10,
157
- // Maximum size of queue
158
- maxQueueSize: 100,
159
- },
160
-
161
- // Enable action & event parameter validation. More info: https://moleculer.services/docs/0.14/validating.html
162
- validator: true,
163
-
164
- errorHandler: null,
165
-
166
- // Enable/disable built-in metrics function. More info: https://moleculer.services/docs/0.14/metrics.html
167
- metrics: {
168
- enabled: false,
169
- // Available built-in reporters: 'Console', 'CSV', 'Event', 'Prometheus', 'Datadog', 'StatsD'
170
- reporter: {
171
- type: 'Prometheus',
172
- options: {
173
- // HTTP port
174
- port: 3030,
175
- // HTTP URL path
176
- path: '/metrics',
177
- // Default labels which are appended to all metrics labels
178
- defaultLabels: (registry) => ({
179
- namespace: registry.broker.namespace,
180
- nodeID: registry.broker.nodeID,
181
- }),
182
- },
183
- },
184
- },
185
-
186
- // Enable built-in tracing function. More info: https://moleculer.services/docs/0.14/tracing.html
187
- tracing: {
188
- enabled: true,
189
- // Available built-in exporters: 'Console', 'Datadog', 'Event', 'EventLegacy', 'Jaeger', 'Zipkin'
190
- exporter: {
191
- type: 'Console', // Console exporter is only for development!
192
- options: {
193
- // Custom logger
194
- logger: null,
195
- // Using colors
196
- colors: true,
197
- // Width of row
198
- width: 100,
199
- // Gauge width in the row
200
- gaugeWidth: 40,
201
- },
202
- },
203
- },
204
-
205
- // Register internal services ('$node'). More info: https://moleculer.services/docs/0.13/services.html#Internal-services
206
- internalServices: true,
207
- // Register internal middlewares. More info: https://moleculer.services/docs/0.13/middlewares.html#Internal-middlewares
208
- internalMiddlewares: true,
209
-
210
- // Watch the loaded services and hot reload if they changed.
211
- // You can also enable it in Moleculer Runner with `--hot` argument
212
- hotReload: false,
213
-
214
- // Register custom middlewares
215
- middlewares: [],
216
-
217
-
218
- // Called after broker created.
219
- created(broker) {},
220
-
221
- // Called after broker starte.
222
- started(broker) {},
223
-
224
- // Called after broker stopped.
225
- stopped(broker) {},
226
- };
227
-
228
- export { brokerConfig };
@@ -1,80 +0,0 @@
1
- /* eslint-disable import/no-extraneous-dependencies */
2
- /* eslint-disable no-unused-expressions */
3
- /* eslint-disable no-underscore-dangle */
4
-
5
- import { Transporter, GenericObject } from 'moleculer';
6
- import { CdmLogger } from '@cdm-logger/core';
7
- import { MongoConnector } from './mongo-connector';
8
- import { NatsConnector } from './nats-connector';
9
- import { RedisConnector } from './redis-connector';
10
- import { config } from '../config';
11
- import { GraphqlPubSubConnector } from './graphql-pubsub-connector';
12
-
13
- type ILogger = CdmLogger.ILogger;
14
-
15
- /**
16
- * Connection broker class
17
- *
18
- * @class ConnectionBroker
19
- */
20
- export class ConnectionBroker {
21
- private _mongoConnector: MongoConnector;
22
-
23
- private _redisConnector: RedisConnector;
24
-
25
- private _natsConnector: NatsConnector;
26
-
27
- private _graphqlPubsubConnector: GraphqlPubSubConnector;
28
-
29
- /**
30
- * Creates an instance of ConnectionBroker.
31
- * @param {*} options
32
- * @memberof ConnectionBroker
33
- */
34
- constructor(transporter: string | GenericObject, logger: ILogger) {
35
- if (typeof transporter === 'string') {
36
- if (transporter === 'TCP') {
37
- this._graphqlPubsubConnector = new GraphqlPubSubConnector({ logger, type: 'TCP' });
38
- } else if (transporter === 'NATS') {
39
- this._natsConnector = new NatsConnector({});
40
- this._graphqlPubsubConnector = new GraphqlPubSubConnector({
41
- logger,
42
- type: 'NATS',
43
- client: this._natsConnector,
44
- });
45
- }
46
- } else if (transporter.type === 'NATS') {
47
- this._natsConnector = new NatsConnector(transporter.options);
48
- this._graphqlPubsubConnector = new GraphqlPubSubConnector({
49
- logger,
50
- ...transporter,
51
- client: this._natsConnector,
52
- });
53
- }
54
-
55
- this._mongoConnector = new MongoConnector(config.MONGO_URL);
56
- this._redisConnector = new RedisConnector(); // TODO pass constructor options
57
- }
58
-
59
- public get mongoConnection() {
60
- return this._mongoConnector.connect();
61
- }
62
-
63
- public get redisDataloaderClient() {
64
- return this._redisConnector.getRedisDataloaderClient();
65
- }
66
-
67
- public get natsConnection() {
68
- return this._natsConnector.connect();
69
- }
70
-
71
- public get graphqlPubsub() {
72
- return this._graphqlPubsubConnector.getClient();
73
- }
74
-
75
- public async stop() {
76
- this._mongoConnector && (await this._mongoConnector.disconnect());
77
- this._redisConnector && (await this._redisConnector.disconnect());
78
- this._natsConnector && (await this._natsConnector.disconnect());
79
- }
80
- }
@@ -1,43 +0,0 @@
1
- /* eslint-disable no-return-assign */
2
- import { PubSub, PubSubEngine } from 'graphql-subscriptions';
3
- import { NatsPubSub } from 'graphql-nats-subscriptions';
4
- import { logger } from '@cdm-logger/server';
5
- import { GenericObject } from 'moleculer';
6
- import { CdmLogger } from '@cdm-logger/core';
7
-
8
- type ILogger = CdmLogger.ILogger;
9
-
10
- type PubSubOptions = {
11
- logger: ILogger;
12
- } & GenericObject;
13
-
14
- export class GraphqlPubSubConnector {
15
- private client: PubSubEngine | NatsPubSub;
16
-
17
- private opts: PubSubOptions;
18
-
19
- private logger: ILogger;
20
-
21
- /**
22
- * Creates an instance of GraphqlPubSubConnector.
23
- * @param {*} opts
24
- * @memberof GraphqlPubSubConnector
25
- */
26
- constructor(opts?: PubSubOptions) {
27
- this.opts = opts;
28
- this.logger = opts.logger.child({ className: 'GraphqlPubSubConnector' });
29
- }
30
-
31
- public async getClient() {
32
- if (this.opts.type === 'TCP') {
33
- return (this.client = new PubSub());
34
- }
35
- if (this.opts.type === 'NATS') {
36
- // console.log('--this.copts', this.opts.client)
37
- const natsClient = await this.opts.client.connect();
38
- return (this.client = new NatsPubSub({ client: natsClient, logger }));
39
- }
40
- this.logger.warn('Did not defined known transporter [%s], return default pubsub', this.opts.type);
41
- return (this.client = new PubSub());
42
- }
43
- }
@@ -1,78 +0,0 @@
1
- import { connection, Connection, ConnectOptions, createConnection, plugin } from 'mongoose';
2
- import { defaultsDeep } from 'lodash-es';
3
- import { Db } from 'mongodb';
4
- import { logExecutionTime, LoggerVerbosity } from 'mongoose-execution-time';
5
- import { logger } from '@cdm-logger/server';
6
- import { CdmLogger } from '@cdm-logger/core';
7
- import { config } from '../config';
8
-
9
- type ILogger = CdmLogger.ILogger;
10
-
11
- export class MongoConnector {
12
- private client: Connection;
13
-
14
- private db: Db;
15
-
16
- private opts: ConnectOptions;
17
-
18
- private uri: string;
19
-
20
- private logger: ILogger;
21
-
22
- constructor(uri: string, opts?: ConnectOptions) {
23
- this.opts = defaultsDeep(opts, {});
24
- this.uri = uri;
25
- this.logger = logger.child({ className: 'MongoConnector' });
26
- }
27
-
28
- /**
29
- * Connect to database
30
- *
31
- * @memberof MongoConnector
32
- */
33
- public async connect(): Promise<Connection> {
34
- if (this.client) {
35
- return this.client;
36
- }
37
- const conn = createConnection(this.uri, this.opts).asPromise();
38
-
39
- conn.then((result) => {
40
- this.client = result;
41
- this.db = result.db;
42
- this.logger.info(' MongoDB has connected successfully.');
43
- result.on('disconnected', () => this.logger.warn('Mongoose has disconnected.'));
44
- result.on('error', (err) => this.logger.error('MongoDB error.', err));
45
- result.on('reconnect', () => this.logger.info('Mongoose has reconnected.'));
46
- });
47
- if (
48
- config.NODE_ENV === 'development' ||
49
- __DEBUGGING__ ||
50
- config.LOG_LEVEL === 'debug' ||
51
- config.LOG_LEVEL === 'trace'
52
- ) {
53
- plugin(logExecutionTime, {
54
- logger: this.logger,
55
- loggerVerbosity: LoggerVerbosity.High,
56
- loggerLevel: config.LOG_LEVEL,
57
- });
58
- }
59
-
60
- // eslint-disable-next-line @typescript-eslint/no-var-requires,global-require
61
- // plugin(require('@kolinalabs/mongoose-consistent'), {
62
- // actionDefault: 'no_action',
63
- // });
64
- return conn;
65
- }
66
-
67
- /**
68
- * Disconnect from database
69
- *
70
- * @memberof MongoConnector
71
- */
72
- public async disconnect() {
73
- if (!this.client) {
74
- return;
75
- }
76
- await connection.close();
77
- }
78
- }