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

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 (265) hide show
  1. package/.eslintrc.json +1 -1
  2. package/CHANGELOG.md +44 -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/config.json +0 -1
  29. package/lib/generators/add-backend/files/package.json +1 -53
  30. package/lib/generators/add-backend/files/src/api/root-schema.graphqls +9 -0
  31. package/lib/generators/add-backend/files/src/config/env-config.ts.template +2 -24
  32. package/lib/generators/add-backend/files/src/service.ts.template +4 -5
  33. package/lib/generators/add-backend/files/tsconfig.json +1 -1
  34. package/lib/generators/add-backend/files/webpack.config.js +6 -10
  35. package/lib/generators/add-backend/generator.cjs +21 -17
  36. package/lib/generators/add-backend/generator.cjs.map +1 -1
  37. package/lib/generators/add-backend/generator.d.ts +1 -0
  38. package/lib/generators/add-backend/generator.mjs +21 -17
  39. package/lib/generators/add-backend/generator.mjs.map +1 -1
  40. package/lib/generators/add-browser-package/files/package.json +2 -2
  41. package/lib/generators/add-browser-package/generator.cjs +14 -16
  42. package/lib/generators/add-browser-package/generator.cjs.map +1 -1
  43. package/lib/generators/add-browser-package/generator.d.ts +1 -0
  44. package/lib/generators/add-browser-package/generator.mjs +14 -16
  45. package/lib/generators/add-browser-package/generator.mjs.map +1 -1
  46. package/lib/generators/add-client-package/files/CHANGELOG.md +807 -0
  47. package/lib/generators/add-client-package/files/LICENSE +674 -0
  48. package/lib/generators/add-client-package/files/jest.config.js +13 -0
  49. package/lib/generators/add-client-package/files/package.json +30 -0
  50. package/lib/generators/add-client-package/files/rollup.config.mjs +29 -0
  51. package/lib/generators/add-client-package/files/src/components/index.tsx.template +1 -0
  52. package/lib/generators/add-client-package/files/src/index.ts.template +1 -0
  53. package/lib/generators/add-client-package/files/tsconfig.json +27 -0
  54. package/lib/generators/add-client-package/files/webpack.config.js +72 -0
  55. package/lib/generators/add-client-package/generator.cjs +17 -0
  56. package/lib/generators/add-client-package/generator.cjs.map +1 -0
  57. package/lib/generators/add-client-package/generator.d.ts +5 -0
  58. package/lib/generators/add-client-package/generator.mjs +17 -0
  59. package/lib/generators/add-client-package/generator.mjs.map +1 -0
  60. package/lib/generators/add-client-package/generator.spec.d.ts +1 -0
  61. package/lib/generators/add-client-package/schema.json +19 -0
  62. package/lib/generators/add-core-package/files/CHANGELOG.md +1076 -0
  63. package/lib/generators/add-core-package/files/LICENSE +39 -0
  64. package/lib/generators/add-core-package/files/jest.config.js +3 -0
  65. package/lib/generators/add-core-package/files/package.json +30 -0
  66. package/lib/generators/add-core-package/files/rollup.config.mjs +65 -0
  67. package/lib/generators/add-core-package/files/src/constants/index.ts.template +1 -0
  68. package/lib/generators/add-core-package/files/src/constants/types.ts.template +3 -0
  69. package/lib/generators/add-core-package/files/src/index.ts.template +2 -0
  70. package/lib/generators/add-core-package/files/src/types/index.ts.template +1 -0
  71. package/lib/generators/add-core-package/files/src/types/types.ts.template +17 -0
  72. package/lib/generators/add-core-package/files/tsconfig.json +22 -0
  73. package/lib/generators/add-core-package/files/webpack.config.js +53 -0
  74. package/lib/generators/add-core-package/generator.cjs +17 -0
  75. package/lib/generators/add-core-package/generator.cjs.map +1 -0
  76. package/lib/generators/add-core-package/generator.d.ts +5 -0
  77. package/lib/generators/add-core-package/generator.mjs +17 -0
  78. package/lib/generators/add-core-package/generator.mjs.map +1 -0
  79. package/lib/generators/add-core-package/generator.spec.d.ts +1 -0
  80. package/lib/generators/add-core-package/schema.json +19 -0
  81. package/lib/generators/add-frontend/frameworks/chakraui/entry.client.tsx.template +30 -24
  82. package/lib/generators/add-frontend/frameworks/chakraui/entry.server.tsx.template +5 -8
  83. package/lib/generators/add-frontend/frameworks/chakraui/root.tsx.template +3 -3
  84. package/lib/generators/add-frontend/frameworks/tailwindui/entry.client.tsx.template +90 -0
  85. package/lib/generators/add-frontend/frameworks/tailwindui/entry.server.tsx.template +238 -0
  86. package/lib/generators/add-frontend/frameworks/tailwindui/root.tsx.template +117 -0
  87. package/lib/generators/add-frontend/frameworks/tailwindui/tailwind.css +3 -0
  88. package/lib/generators/add-frontend/generator.cjs +60 -42
  89. package/lib/generators/add-frontend/generator.cjs.map +1 -1
  90. package/lib/generators/add-frontend/generator.d.ts +1 -0
  91. package/lib/generators/add-frontend/generator.mjs +60 -42
  92. package/lib/generators/add-frontend/generator.mjs.map +1 -1
  93. package/lib/generators/add-frontend/schema.json +1 -1
  94. package/lib/generators/add-frontend/templates/Dockerfile +1 -1
  95. package/lib/generators/add-frontend/templates/package.json +4 -80
  96. package/lib/generators/add-frontend/templates/postcss.config.js +6 -0
  97. package/lib/generators/add-frontend/templates/src/config/public-config.ts.template +6 -0
  98. package/lib/generators/add-frontend/templates/tailwind.config.ts.template +12 -0
  99. package/lib/generators/add-fullstack/files/Jenkinsfile +4 -7
  100. package/lib/generators/add-fullstack/files/jest-mongodb-config.js +3 -2
  101. package/lib/generators/add-fullstack/files/jest.config.base.js +43 -4
  102. package/lib/generators/add-fullstack/files/jest.config.base.mjs +99 -0
  103. package/lib/generators/add-fullstack/files/jest.config.mongodb.mjs +3 -0
  104. package/lib/generators/add-fullstack/files/lint-staged.config.js +4 -1
  105. package/lib/generators/add-fullstack/files/nx.json +18 -13
  106. package/lib/generators/add-fullstack/files/package.json +12 -24
  107. package/lib/generators/add-fullstack/files/tools/cli/helpers/util.js +1 -1
  108. package/lib/generators/add-fullstack/files/tools/deploy-cli/updateLernaVersion.js +1 -1
  109. package/lib/generators/add-fullstack/files/tools/deploy-cli/updateYamlSettings.js +14 -15
  110. package/lib/generators/add-fullstack/files/tools/prettier.config.js +8 -0
  111. package/lib/generators/add-fullstack/files/tools/rollup/rollupPluginGenerateJson.mjs +48 -0
  112. package/lib/generators/add-fullstack/files/tools/rollup/rollupPluginModifyLibFiles.mjs +410 -0
  113. package/lib/generators/add-fullstack/files/tools/runLint.mjs +15 -0
  114. package/lib/generators/add-fullstack/files/tools/sortPackageJson.mjs +8 -2
  115. package/lib/generators/add-fullstack/files/tools/update-dependencies.mjs +95 -0
  116. package/lib/generators/add-fullstack/files/tools/update-dependency-link.mjs +138 -0
  117. package/lib/generators/add-fullstack/files/tools/update-dependency-version.js +104 -89
  118. package/lib/generators/add-fullstack/files/tools/updateUtils.mjs +77 -0
  119. package/lib/generators/add-fullstack/generator.cjs +71 -13
  120. package/lib/generators/add-fullstack/generator.cjs.map +1 -1
  121. package/lib/generators/add-fullstack/generator.mjs +71 -13
  122. package/lib/generators/add-fullstack/generator.mjs.map +1 -1
  123. package/lib/generators/add-fullstack/schema.json +9 -0
  124. package/lib/generators/add-fullstack/updates/index.d.ts +2 -0
  125. package/lib/generators/add-fullstack/updates/jenkinsfileUpdate.cjs +36 -0
  126. package/lib/generators/add-fullstack/updates/jenkinsfileUpdate.cjs.map +1 -0
  127. package/lib/generators/add-fullstack/updates/jenkinsfileUpdate.d.ts +1 -0
  128. package/lib/generators/add-fullstack/updates/jenkinsfileUpdate.mjs +36 -0
  129. package/lib/generators/add-fullstack/updates/jenkinsfileUpdate.mjs.map +1 -0
  130. package/lib/generators/add-fullstack/updates/packageJsonUpdate.cjs +8 -0
  131. package/lib/generators/add-fullstack/updates/packageJsonUpdate.cjs.map +1 -0
  132. package/lib/generators/add-fullstack/updates/packageJsonUpdate.d.ts +2 -0
  133. package/lib/generators/add-fullstack/updates/packageJsonUpdate.mjs +8 -0
  134. package/lib/generators/add-fullstack/updates/packageJsonUpdate.mjs.map +1 -0
  135. package/lib/generators/add-moleculer/files/Dockerfile +1 -1
  136. package/lib/generators/add-moleculer/files/package.json +6 -25
  137. package/lib/generators/add-moleculer/generator.cjs +14 -16
  138. package/lib/generators/add-moleculer/generator.cjs.map +1 -1
  139. package/lib/generators/add-moleculer/generator.d.ts +1 -0
  140. package/lib/generators/add-moleculer/generator.mjs +14 -16
  141. package/lib/generators/add-moleculer/generator.mjs.map +1 -1
  142. package/lib/generators/add-server-package/files/CHANGELOG.md +2599 -0
  143. package/lib/generators/add-server-package/files/LICENSE +674 -0
  144. package/lib/generators/add-server-package/files/jest.config.js +32 -0
  145. package/lib/generators/add-server-package/files/package.json +78 -0
  146. package/lib/generators/add-server-package/files/rollup.config.mjs +30 -0
  147. package/lib/generators/add-server-package/files/src/constants/constants.ts.template +62 -0
  148. package/lib/generators/add-server-package/files/src/constants/index.ts.template +1 -0
  149. package/lib/generators/add-server-package/files/src/constants/types.ts.template +21 -0
  150. package/lib/generators/add-server-package/files/src/index.ts.template +6 -0
  151. package/lib/generators/add-server-package/files/src/module.ts.template +6 -0
  152. package/lib/generators/add-server-package/files/tsconfig.json +27 -0
  153. package/lib/generators/add-server-package/generator.cjs +17 -0
  154. package/lib/generators/add-server-package/generator.cjs.map +1 -0
  155. package/lib/generators/add-server-package/generator.d.ts +5 -0
  156. package/lib/generators/add-server-package/generator.mjs +17 -0
  157. package/lib/generators/add-server-package/generator.mjs.map +1 -0
  158. package/lib/generators/add-server-package/generator.spec.d.ts +1 -0
  159. package/lib/generators/add-server-package/schema.json +19 -0
  160. package/lib/index.cjs +1 -1
  161. package/lib/index.d.ts +5 -0
  162. package/lib/index.mjs +1 -1
  163. package/package.json +4 -2
  164. package/project.json +12 -1
  165. package/rollup.config.mjs +8 -0
  166. package/src/constants/index.ts +2 -1
  167. package/src/executors/sort-package-json/executor.spec.ts +18 -0
  168. package/src/executors/sort-package-json/executor.ts +53 -0
  169. package/src/executors/sort-package-json/schema.d.ts +1 -0
  170. package/src/executors/sort-package-json/schema.json +9 -0
  171. package/src/executors/update-deploy-version/executor.spec.ts +18 -0
  172. package/src/executors/update-deploy-version/executor.ts +36 -0
  173. package/src/executors/update-deploy-version/schema.d.ts +3 -0
  174. package/src/executors/update-deploy-version/schema.json +14 -0
  175. package/src/generators/add-backend/generator.ts +8 -4
  176. package/src/generators/add-browser-package/generator.ts +7 -6
  177. package/src/generators/add-client-package/generator.spec.ts +20 -0
  178. package/src/generators/add-client-package/generator.ts +24 -0
  179. package/src/generators/add-client-package/schema.d.ts +4 -0
  180. package/src/generators/add-client-package/schema.json +19 -0
  181. package/src/generators/add-core-package/generator.spec.ts +20 -0
  182. package/src/generators/add-core-package/generator.ts +24 -0
  183. package/src/generators/add-core-package/schema.d.ts +4 -0
  184. package/src/generators/add-core-package/schema.json +19 -0
  185. package/src/generators/add-frontend/frameworks/chakraui/entry.client.tsx.template +30 -24
  186. package/src/generators/add-frontend/frameworks/chakraui/entry.server.tsx.template +5 -8
  187. package/src/generators/add-frontend/frameworks/chakraui/root.tsx.template +3 -3
  188. package/src/generators/add-frontend/frameworks/tailwindui/entry.client.tsx.template +90 -0
  189. package/src/generators/add-frontend/frameworks/tailwindui/entry.server.tsx.template +238 -0
  190. package/src/generators/add-frontend/frameworks/tailwindui/root.tsx.template +117 -0
  191. package/src/generators/add-frontend/frameworks/tailwindui/tailwind.css +3 -0
  192. package/src/generators/add-frontend/generator.ts +24 -2
  193. package/src/generators/add-frontend/schema.json +1 -1
  194. package/src/generators/add-fullstack/files/Jenkinsfile +4 -7
  195. package/src/generators/add-fullstack/files/jest-mongodb-config.js +3 -2
  196. package/src/generators/add-fullstack/files/jest.config.base.js +43 -4
  197. package/src/generators/add-fullstack/files/jest.config.base.mjs +99 -0
  198. package/src/generators/add-fullstack/files/jest.config.mongodb.mjs +3 -0
  199. package/src/generators/add-fullstack/files/lint-staged.config.js +4 -1
  200. package/src/generators/add-fullstack/files/nx.json +18 -13
  201. package/src/generators/add-fullstack/files/package.json +12 -24
  202. package/src/generators/add-fullstack/files/tools/cli/helpers/util.js +1 -1
  203. package/src/generators/add-fullstack/files/tools/deploy-cli/updateLernaVersion.js +1 -1
  204. package/src/generators/add-fullstack/files/tools/deploy-cli/updateYamlSettings.js +14 -15
  205. package/src/generators/add-fullstack/files/tools/prettier.config.js +8 -0
  206. package/src/generators/add-fullstack/files/tools/rollup/rollupPluginGenerateJson.mjs +48 -0
  207. package/src/generators/add-fullstack/files/tools/rollup/rollupPluginModifyLibFiles.mjs +410 -0
  208. package/src/generators/add-fullstack/files/tools/runLint.mjs +15 -0
  209. package/src/generators/add-fullstack/files/tools/sortPackageJson.mjs +8 -2
  210. package/src/generators/add-fullstack/files/tools/update-dependencies.mjs +95 -0
  211. package/src/generators/add-fullstack/files/tools/update-dependency-link.mjs +138 -0
  212. package/src/generators/add-fullstack/files/tools/update-dependency-version.js +104 -89
  213. package/src/generators/add-fullstack/files/tools/updateUtils.mjs +77 -0
  214. package/src/generators/add-fullstack/generator.ts +101 -13
  215. package/src/generators/add-fullstack/schema.d.ts +3 -1
  216. package/src/generators/add-fullstack/schema.json +9 -0
  217. package/src/generators/add-fullstack/updates/index.ts +2 -0
  218. package/src/generators/add-fullstack/updates/jenkinsfileUpdate.ts +47 -0
  219. package/src/generators/add-fullstack/updates/packageJsonUpdate.ts +11 -0
  220. package/src/generators/add-moleculer/files/Dockerfile +1 -1
  221. package/src/generators/add-moleculer/files/package.json +6 -25
  222. package/src/generators/add-moleculer/generator.ts +7 -6
  223. package/src/generators/add-server-package/generator.spec.ts +20 -0
  224. package/src/generators/add-server-package/generator.ts +24 -0
  225. package/src/generators/add-server-package/schema.d.ts +4 -0
  226. package/src/generators/add-server-package/schema.json +19 -0
  227. package/src/index.ts +5 -0
  228. package/lib/generators/add-backend/files/generated-schema.graphql +0 -235
  229. package/lib/generators/add-backend/files/knexfile.js +0 -63
  230. package/lib/generators/add-backend/files/src/api/remote-config.ts.template +0 -11
  231. package/lib/generators/add-backend/files/src/api/resolver.ts.template +0 -15
  232. package/lib/generators/add-backend/files/src/api/scalar.ts.template +0 -16
  233. package/lib/generators/add-backend/files/src/api/schema-builder.ts.template +0 -189
  234. package/lib/generators/add-backend/files/src/api/utils.ts.template +0 -44
  235. package/lib/generators/add-backend/files/src/config/moleculer.config.ts.template +0 -228
  236. package/lib/generators/add-backend/files/src/connectors/connection-broker.ts.template +0 -80
  237. package/lib/generators/add-backend/files/src/connectors/graphql-pubsub-connector.ts.template +0 -43
  238. package/lib/generators/add-backend/files/src/connectors/mongo-connector.ts.template +0 -78
  239. package/lib/generators/add-backend/files/src/connectors/nats-connector.ts.template +0 -82
  240. package/lib/generators/add-backend/files/src/connectors/redis-connector.ts.template +0 -73
  241. package/lib/generators/add-backend/files/src/express-app.ts.template +0 -67
  242. package/lib/generators/add-backend/files/src/interfaces/index.ts.template +0 -1
  243. package/lib/generators/add-backend/files/src/interfaces/module-interface.ts.template +0 -16
  244. package/lib/generators/add-backend/files/src/main.spec.ts.template +0 -129
  245. package/lib/generators/add-backend/files/src/middleware/__tests__/cors.test.ts.template +0 -12
  246. package/lib/generators/add-backend/files/src/middleware/cors.ts.template +0 -31
  247. package/lib/generators/add-backend/files/src/middleware/error.ts.template +0 -63
  248. package/lib/generators/add-backend/files/src/middleware/moleculer-inter-namespace.ts.template +0 -60
  249. package/lib/generators/add-backend/files/src/middleware/persistedQuery.ts.template +0 -40
  250. package/lib/generators/add-backend/files/src/middleware/sentry.ts.template +0 -9
  251. package/lib/generators/add-backend/files/src/middleware/services.ts.template +0 -16
  252. package/lib/generators/add-backend/files/src/middleware/tracer.ts.template +0 -24
  253. package/lib/generators/add-backend/files/src/modules/auth/schema/auth-schema.graphql +0 -25
  254. package/lib/generators/add-backend/files/src/server-setup/graphql-server.ts.template +0 -185
  255. package/lib/generators/add-backend/files/src/server-setup/graphql-subscription-server.ts.template +0 -113
  256. package/lib/generators/add-backend/files/src/server-setup/graphql-ws.ts.template +0 -158
  257. package/lib/generators/add-backend/files/src/server-setup/mongodb-migration-update.ts.template +0 -47
  258. package/lib/generators/add-backend/files/src/server-setup/utils.ts.template +0 -43
  259. package/lib/generators/add-backend/files/src/server-setup/websocket-multipath-update.ts.template +0 -88
  260. package/lib/generators/add-backend/files/src/stack-server.ts.template +0 -277
  261. package/lib/generators/add-backend/files/src/utils/migrations.ts.template +0 -32
  262. package/lib/generators/add-backend/files/uploads/3986781.ppt +0 -0
  263. package/lib/generators/add-frontend/templates/public/css/dashboard.css +0 -491
  264. package/lib/generators/add-fullstack/files/tools/update-dependency-link.js +0 -107
  265. package/src/generators/add-fullstack/files/tools/update-dependency-link.js +0 -107
@@ -1,277 +0,0 @@
1
- /* eslint-disable import/namespace */
2
- /* eslint-disable import/no-unresolved */
3
- /* eslint-disable import/no-extraneous-dependencies */
4
- // version 08/25/2021
5
- import * as http from 'http';
6
- import * as express from 'express';
7
- import { logger as serverLogger } from '@cdm-logger/server';
8
- import { Feature } from '@common-stack/server-core';
9
- import { ContainerModule, interfaces, Container } from 'inversify';
10
- import { ServiceBroker, ServiceSettingSchema } from 'moleculer';
11
- import { CommonType } from '@common-stack/core';
12
- import { isEmpty } from 'lodash-es';
13
- import { CdmLogger } from '@cdm-logger/core';
14
- import { applyMiddleware } from 'graphql-middleware';
15
- import { shield } from 'graphql-shield';
16
- import { expressApp } from './express-app';
17
- import { GraphqlServer } from './server-setup/graphql-server';
18
- import { config } from './config';
19
- import { ConnectionBroker } from './connectors/connection-broker';
20
- import { brokerConfig } from './config/moleculer.config';
21
- import modules, { settings } from './modules';
22
- import { GatewaySchemaBuilder } from './api/schema-builder';
23
- import { WebsocketMultiPathServer } from './server-setup/websocket-multipath-update';
24
- import { IModuleService } from './interfaces';
25
- import { migrate } from './utils/migrations';
26
- import { InterNamespaceMiddleware } from './middleware/moleculer-inter-namespace';
27
- // This is temp and will be replaced one we add support for rules in Feature
28
-
29
- type ILogger = CdmLogger.ILogger;
30
-
31
- function startListening(port) {
32
- // eslint-disable-next-line @typescript-eslint/no-this-alias
33
- const server = this;
34
- return new Promise((resolve) => {
35
- server.listen(port, resolve);
36
- });
37
- }
38
-
39
- const infraModule = ({ broker, pubsub, mongoClient, logger }) =>
40
- new ContainerModule((bind: interfaces.Bind) => {
41
- bind('Logger').toConstantValue(logger);
42
- bind(CommonType.LOGGER).toConstantValue(logger);
43
- bind('Environment').toConstantValue(config.NODE_ENV || 'development');
44
- bind(CommonType.ENVIRONMENT).toConstantValue(config.NODE_ENV || 'development');
45
- bind('PubSub').toConstantValue(pubsub);
46
- bind(CommonType.PUBSUB).toConstantValue(pubsub);
47
- bind(CommonType.MOLECULER_BROKER).toConstantValue(broker);
48
- bind('MoleculerBroker').toConstantValue(broker);
49
- bind('MongoDBConnection').toConstantValue(mongoClient);
50
- });
51
-
52
- /**
53
- * Controls the lifecycle of the Application Server
54
- *
55
- * @export
56
- * @class StackServer
57
- */
58
- export class StackServer {
59
- public httpServer: http.Server & { startListening?: (port) => void };
60
-
61
- private app: express.Express;
62
-
63
- private logger: ILogger;
64
-
65
- private connectionBroker: ConnectionBroker;
66
-
67
- private mainserviceBroker: ServiceBroker;
68
-
69
- private microserviceBroker: ServiceBroker;
70
-
71
- private multiPathWebsocket: WebsocketMultiPathServer;
72
-
73
- private serviceContainer: Container;
74
-
75
- private microserviceContainer: Container;
76
-
77
- constructor() {
78
- this.logger = serverLogger.child({ className: 'StackServer' });
79
- }
80
-
81
- public async initialize() {
82
- this.logger.info('StackServer initializing');
83
-
84
- // eslint-disable-next-line import/namespace
85
- this.connectionBroker = new ConnectionBroker(brokerConfig.transporter, this.logger);
86
- const redisClient = this.connectionBroker.redisDataloaderClient;
87
-
88
- const mongoClient = await this.connectionBroker.mongoConnection;
89
-
90
- // Moleculer Broker Setup
91
- this.mainserviceBroker = new ServiceBroker({
92
- ...brokerConfig,
93
- middlewares: [
94
- InterNamespaceMiddleware([
95
- {
96
- namespace: 'api-admin',
97
- transporter: brokerConfig.transporter,
98
- },
99
- ]),
100
- ],
101
- started: async () => {
102
- await modules.preStart(this.serviceContainer);
103
- if (config.NODE_ENV === 'development') {
104
- // await modules.microservicePreStart(this.micorserviceContainer);
105
- }
106
-
107
- try {
108
- this.logger.info('Starting Migration');
109
- await migrate(mongoClient, this.serviceContainer, this.logger);
110
- this.logger.info('End Migration');
111
- } catch (e) {
112
- this.logger.error('Error while running migrations', e);
113
- this.logger.error(e.stack);
114
- }
115
-
116
- try {
117
- await modules.postStart(this.serviceContainer);
118
- } catch (e) {
119
- this.logger.error('Error while running Post Start', e);
120
- this.logger.error(e.stack);
121
- }
122
- // start DB migration
123
-
124
- if (config.NODE_ENV === 'development') {
125
- // await modules.microservicePostStart(this.micorserviceContainer);
126
- }
127
- },
128
-
129
- // created,
130
- async created() {
131
- return Promise.resolve();
132
- },
133
- });
134
-
135
- if (config.NODE_ENV === 'development') {
136
- this.microserviceBroker = new ServiceBroker({
137
- ...brokerConfig,
138
- nodeID: 'node-broker-2',
139
- started: async () => {
140
- await modules.microservicePreStart(this.microserviceContainer);
141
- await modules.microservicePostStart(this.microserviceContainer);
142
- },
143
- // created,
144
- created: async () => Promise.resolve(),
145
- });
146
- }
147
- const pubsub = await this.connectionBroker.graphqlPubsub;
148
- const InfraStructureFeature = new Feature({
149
- createContainerFunc: [
150
- () =>
151
- infraModule({
152
- broker: this.mainserviceBroker,
153
- pubsub,
154
- mongoClient,
155
- logger: serverLogger,
156
- }),
157
- ],
158
- createServiceFunc: (container) => ({ moleculerBroker: container.get(CommonType.MOLECULER_BROKER) }),
159
- createHemeraContainerFunc: [
160
- () =>
161
- infraModule({
162
- broker: this.mainserviceBroker,
163
- pubsub,
164
- mongoClient,
165
- logger: serverLogger,
166
- }),
167
- ],
168
- });
169
-
170
- const allModules = new Feature(InfraStructureFeature, modules as Feature);
171
- let executableSchema = await new GatewaySchemaBuilder({
172
- schema: allModules.schemas,
173
- resolvers: allModules.createResolvers({
174
- pubsub,
175
- logger: serverLogger,
176
- subscriptionID: `${settings.subTopic}`,
177
- }),
178
- directives: [],
179
- directiveResolvers: allModules.createDirectives({ logger: this.logger }),
180
- middlewares: allModules.graphqlMiddlewares,
181
- rules: allModules.rules,
182
- logger: serverLogger,
183
- }).build();
184
-
185
- // set the service container
186
- this.serviceContainer = await allModules.createContainers({ ...settings, mongoConnection: mongoClient });
187
- const createServiceContext = allModules.createServiceContext({ ...settings, mongoConnection: mongoClient });
188
- const serviceBroker: IModuleService = {
189
- serviceContainer: this.serviceContainer,
190
- serviceContext: createServiceContext,
191
- dataSource: allModules.createDataSource(),
192
- defaultPreferences: allModules.createDefaultPreferences(),
193
- createContext: async (req, res) => allModules.createContext(req, res),
194
- logger: serverLogger,
195
- schema: executableSchema,
196
- };
197
- allModules.loadMainMoleculerService({
198
- broker: this.mainserviceBroker,
199
- container: this.serviceContainer,
200
- settings,
201
- });
202
- if (config.NODE_ENV === 'development') {
203
- this.microserviceContainer = await allModules.createHemeraContainers({
204
- ...settings,
205
- mongoConnection: mongoClient,
206
- });
207
- allModules.loadClientMoleculerService({
208
- broker: this.microserviceBroker,
209
- container: this.microserviceContainer,
210
- settings,
211
- });
212
- }
213
-
214
- // initialize Servers
215
- this.httpServer = http.createServer();
216
- this.app = await expressApp(serviceBroker, null, this.httpServer);
217
-
218
- this.httpServer.startListening = startListening.bind(this.httpServer);
219
- this.httpServer.on('request', this.app);
220
- this.httpServer.on('close', () => {
221
- this.httpServer = undefined;
222
- });
223
-
224
- const customWebsocket = allModules.getWebsocketConfig();
225
- const customWebsocketEnable = !isEmpty(customWebsocket);
226
-
227
- if (customWebsocketEnable) {
228
- this.multiPathWebsocket = new WebsocketMultiPathServer(serviceBroker, redisClient, customWebsocket);
229
- this.httpServer = this.multiPathWebsocket.httpServerUpgrade(this.httpServer);
230
- }
231
- const graphqlServer = new GraphqlServer(
232
- this.app,
233
- this.httpServer,
234
- redisClient,
235
- serviceBroker,
236
- !customWebsocketEnable,
237
- );
238
-
239
- await graphqlServer.initialize();
240
- this.app.use('/graphql', (req, res, next) => {
241
- res.append('Access-Control-Allow-Credentials', JSON.stringify(true));
242
- res.append('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
243
- res.append('Access-Control-Allow-Origin', '*');
244
- res.append(
245
- 'Access-Control-Allow-Headers',
246
- 'X-Requested-With, X-HTTP-Method-Override, X-CSP-Nonce, Content-Type, Accept',
247
- );
248
- next();
249
- });
250
- }
251
-
252
- public async start() {
253
- if (config.NODE_ENV === 'development') {
254
- await Promise.all([this.mainserviceBroker.start(), this.microserviceBroker.start()]);
255
- } else {
256
- await this.mainserviceBroker.start();
257
- }
258
- }
259
-
260
- public async cleanup() {
261
- if (this.multiPathWebsocket) {
262
- this.multiPathWebsocket.close();
263
- }
264
- if (this.httpServer) {
265
- await this.httpServer.close();
266
- }
267
- if (this.connectionBroker) {
268
- await this.connectionBroker.stop();
269
- }
270
- if (this.mainserviceBroker) {
271
- await this.mainserviceBroker.stop();
272
- }
273
- if (this.microserviceBroker) {
274
- await this.microserviceBroker.stop();
275
- }
276
- }
277
- }
@@ -1,32 +0,0 @@
1
- import { Schema, Connection } from 'mongoose';
2
- import { Container } from 'inversify';
3
- import { IDatabaseMigration } from '@adminide-stack/core';
4
- import { CdmLogger } from '@cdm-logger/core';
5
-
6
- export const MigrationSchema = new Schema({
7
- migrated_at: Date,
8
- name: { required: true, type: String },
9
- });
10
-
11
- export async function migrate(db: Connection, container: Container, logger: CdmLogger.ILogger) {
12
- try {
13
- const migrations = container.getAll<IDatabaseMigration>('MongodbMigration');
14
- const model = db.model<any, any>('Migration', MigrationSchema);
15
- migrations.map(async (migration) => {
16
- const exists = await model.findOne({ name: migration.id });
17
- if (!exists) {
18
- try {
19
- await migration.up();
20
- await model.create({ name: migration.id, migrated_at: new Date() });
21
- } catch (e) {
22
- console.log(`Can not process migration ${migration.id}: `, e);
23
- }
24
- }
25
-
26
- return migration.id;
27
- });
28
- } catch (err) {
29
- console.warn('ignoring migrate database due to ', err.message);
30
- }
31
-
32
- }