@common-stack/server-stack 0.5.29

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 (55) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +10 -0
  3. package/lib/config/env-config.cjs +20 -0
  4. package/lib/config/env-config.cjs.map +1 -0
  5. package/lib/config/env-config.d.ts +15 -0
  6. package/lib/config/env-config.mjs +20 -0
  7. package/lib/config/env-config.mjs.map +1 -0
  8. package/lib/config/index.d.ts +1 -0
  9. package/lib/config/moleculer.config.cjs +195 -0
  10. package/lib/config/moleculer.config.cjs.map +1 -0
  11. package/lib/config/moleculer.config.d.ts +20 -0
  12. package/lib/config/moleculer.config.mjs +195 -0
  13. package/lib/config/moleculer.config.mjs.map +1 -0
  14. package/lib/connectors/connection-broker.cjs +57 -0
  15. package/lib/connectors/connection-broker.cjs.map +1 -0
  16. package/lib/connectors/connection-broker.d.ts +51 -0
  17. package/lib/connectors/connection-broker.mjs +57 -0
  18. package/lib/connectors/connection-broker.mjs.map +1 -0
  19. package/lib/connectors/graphql-pubsub-connector.cjs +25 -0
  20. package/lib/connectors/graphql-pubsub-connector.cjs.map +1 -0
  21. package/lib/connectors/graphql-pubsub-connector.d.ts +22 -0
  22. package/lib/connectors/graphql-pubsub-connector.mjs +25 -0
  23. package/lib/connectors/graphql-pubsub-connector.mjs.map +1 -0
  24. package/lib/connectors/mongo-connector.cjs +52 -0
  25. package/lib/connectors/mongo-connector.cjs.map +1 -0
  26. package/lib/connectors/mongo-connector.d.ts +21 -0
  27. package/lib/connectors/mongo-connector.mjs +52 -0
  28. package/lib/connectors/mongo-connector.mjs.map +1 -0
  29. package/lib/connectors/nats-connector.cjs +59 -0
  30. package/lib/connectors/nats-connector.cjs.map +1 -0
  31. package/lib/connectors/nats-connector.d.ts +20 -0
  32. package/lib/connectors/nats-connector.mjs +59 -0
  33. package/lib/connectors/nats-connector.mjs.map +1 -0
  34. package/lib/connectors/redis-connector.cjs +54 -0
  35. package/lib/connectors/redis-connector.cjs.map +1 -0
  36. package/lib/connectors/redis-connector.d.ts +31 -0
  37. package/lib/connectors/redis-connector.mjs +54 -0
  38. package/lib/connectors/redis-connector.mjs.map +1 -0
  39. package/lib/index.cjs +1 -0
  40. package/lib/index.cjs.map +1 -0
  41. package/lib/index.d.ts +1 -0
  42. package/lib/index.mjs +1 -0
  43. package/lib/index.mjs.map +1 -0
  44. package/lib/interface.d.ts +7 -0
  45. package/lib/middleware/moleculer-inter-namespace.cjs +44 -0
  46. package/lib/middleware/moleculer-inter-namespace.cjs.map +1 -0
  47. package/lib/middleware/moleculer-inter-namespace.d.ts +2 -0
  48. package/lib/middleware/moleculer-inter-namespace.mjs +44 -0
  49. package/lib/middleware/moleculer-inter-namespace.mjs.map +1 -0
  50. package/lib/stack-server.cjs +78 -0
  51. package/lib/stack-server.cjs.map +1 -0
  52. package/lib/stack-server.d.ts +20 -0
  53. package/lib/stack-server.mjs +78 -0
  54. package/lib/stack-server.mjs.map +1 -0
  55. package/package.json +40 -0
@@ -0,0 +1,44 @@
1
+ 'use strict';var moleculer=require('moleculer'),_=require('lodash');function _interopNamespaceDefault(e){var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var ___namespace=/*#__PURE__*/_interopNamespaceDefault(_);/* eslint-disable no-param-reassign */
2
+ const InterNamespaceMiddleware = function (options) {
3
+ if (!Array.isArray(options)) {
4
+ throw new Error('Must be an Array');
5
+ }
6
+ let thisBroker;
7
+ const brokers = {};
8
+ return {
9
+ created(broker) {
10
+ thisBroker = broker;
11
+ options.forEach((nsOpts) => {
12
+ if (___namespace.isString(nsOpts)) {
13
+ nsOpts = {
14
+ namespace: nsOpts,
15
+ };
16
+ }
17
+ const ns = nsOpts.namespace;
18
+ const brokerOpts = ___namespace.defaultsDeep({}, nsOpts, { nodeID: null, middlewares: null, created: null, started: null }, broker.options);
19
+ brokers[ns] = new moleculer.ServiceBroker(brokerOpts);
20
+ });
21
+ },
22
+ started() {
23
+ return Promise.all(Object.values(brokers).map((b) => b.start()));
24
+ },
25
+ stopped() {
26
+ return Promise.all(Object.values(brokers).map((b) => b.stop()));
27
+ },
28
+ call(next) {
29
+ return function (actionName, params, opts = {}) {
30
+ if (___namespace.isString(actionName) && actionName.includes('@')) {
31
+ const [action, namespace] = actionName.split('@');
32
+ if (brokers[namespace]) {
33
+ return brokers[namespace].call(action, params, opts);
34
+ }
35
+ if (namespace === thisBroker.namespace) {
36
+ return next(action, params, opts);
37
+ }
38
+ throw new Error(`Unknown namespace: ${namespace}`);
39
+ }
40
+ return next(actionName, params, opts);
41
+ };
42
+ },
43
+ };
44
+ };exports.InterNamespaceMiddleware=InterNamespaceMiddleware;//# sourceMappingURL=moleculer-inter-namespace.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"moleculer-inter-namespace.cjs","sources":["../../src/middleware/moleculer-inter-namespace.ts"],"sourcesContent":[null],"names":["_","ServiceBroker"],"mappings":"4ZAAA;AAIO,MAAM,wBAAwB,GAAG,UAAU,OAAO,EAAA;AACrD,IAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AACzB,QAAA,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;AACvC,KAAA;AAED,IAAA,IAAI,UAAyB,CAAC;IAC9B,MAAM,OAAO,GAAqC,EAAE,CAAC;IAErD,OAAO;AACH,QAAA,OAAO,CAAC,MAAqB,EAAA;YACzB,UAAU,GAAG,MAAM,CAAC;AACpB,YAAA,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AACvB,gBAAA,IAAIA,YAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACpB,oBAAA,MAAM,GAAG;AACL,wBAAA,SAAS,EAAE,MAAM;qBACpB,CAAC;AACL,iBAAA;AACD,gBAAA,MAAM,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC;AAE5B,gBAAA,MAAM,UAAU,GAAGA,YAAC,CAAC,YAAY,CAC7B,EAAE,EACF,MAAM,EACN,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EACjE,MAAM,CAAC,OAAO,CACjB,CAAC;gBACF,OAAO,CAAC,EAAE,CAAC,GAAG,IAAIC,uBAAa,CAAC,UAAU,CAAC,CAAC;AAChD,aAAC,CAAC,CAAC;SACN;QAED,OAAO,GAAA;YACH,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;SACpE;QAED,OAAO,GAAA;YACH,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;SACnE;AAED,QAAA,IAAI,CAAC,IAAI,EAAA;AACL,YAAA,OAAO,UAAU,UAAU,EAAE,MAAM,EAAE,IAAI,GAAG,EAAE,EAAA;AAC1C,gBAAA,IAAID,YAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACpD,oBAAA,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAElD,oBAAA,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;AACpB,wBAAA,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AACxD,qBAAA;AACD,oBAAA,IAAI,SAAS,KAAK,UAAU,CAAC,SAAS,EAAE;wBACpC,OAAO,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AACrC,qBAAA;AACD,oBAAA,MAAM,IAAI,KAAK,CAAC,sBAAsB,SAAS,CAAA,CAAE,CAAC,CAAC;AACtD,iBAAA;gBAED,OAAO,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAC1C,aAAC,CAAC;SACL;KACJ,CAAC;AACN"}
@@ -0,0 +1,2 @@
1
+ import { Middleware } from 'moleculer';
2
+ export declare const InterNamespaceMiddleware: (options: any) => Middleware;
@@ -0,0 +1,44 @@
1
+ import {ServiceBroker}from'moleculer';import*as _ from'lodash';/* eslint-disable no-param-reassign */
2
+ const InterNamespaceMiddleware = function (options) {
3
+ if (!Array.isArray(options)) {
4
+ throw new Error('Must be an Array');
5
+ }
6
+ let thisBroker;
7
+ const brokers = {};
8
+ return {
9
+ created(broker) {
10
+ thisBroker = broker;
11
+ options.forEach((nsOpts) => {
12
+ if (_.isString(nsOpts)) {
13
+ nsOpts = {
14
+ namespace: nsOpts,
15
+ };
16
+ }
17
+ const ns = nsOpts.namespace;
18
+ const brokerOpts = _.defaultsDeep({}, nsOpts, { nodeID: null, middlewares: null, created: null, started: null }, broker.options);
19
+ brokers[ns] = new ServiceBroker(brokerOpts);
20
+ });
21
+ },
22
+ started() {
23
+ return Promise.all(Object.values(brokers).map((b) => b.start()));
24
+ },
25
+ stopped() {
26
+ return Promise.all(Object.values(brokers).map((b) => b.stop()));
27
+ },
28
+ call(next) {
29
+ return function (actionName, params, opts = {}) {
30
+ if (_.isString(actionName) && actionName.includes('@')) {
31
+ const [action, namespace] = actionName.split('@');
32
+ if (brokers[namespace]) {
33
+ return brokers[namespace].call(action, params, opts);
34
+ }
35
+ if (namespace === thisBroker.namespace) {
36
+ return next(action, params, opts);
37
+ }
38
+ throw new Error(`Unknown namespace: ${namespace}`);
39
+ }
40
+ return next(actionName, params, opts);
41
+ };
42
+ },
43
+ };
44
+ };export{InterNamespaceMiddleware};//# sourceMappingURL=moleculer-inter-namespace.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"moleculer-inter-namespace.mjs","sources":["../../src/middleware/moleculer-inter-namespace.ts"],"sourcesContent":[null],"names":[],"mappings":"+DAAA;AAIO,MAAM,wBAAwB,GAAG,UAAU,OAAO,EAAA;AACrD,IAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AACzB,QAAA,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;AACvC,KAAA;AAED,IAAA,IAAI,UAAyB,CAAC;IAC9B,MAAM,OAAO,GAAqC,EAAE,CAAC;IAErD,OAAO;AACH,QAAA,OAAO,CAAC,MAAqB,EAAA;YACzB,UAAU,GAAG,MAAM,CAAC;AACpB,YAAA,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AACvB,gBAAA,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACpB,oBAAA,MAAM,GAAG;AACL,wBAAA,SAAS,EAAE,MAAM;qBACpB,CAAC;AACL,iBAAA;AACD,gBAAA,MAAM,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC;AAE5B,gBAAA,MAAM,UAAU,GAAG,CAAC,CAAC,YAAY,CAC7B,EAAE,EACF,MAAM,EACN,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EACjE,MAAM,CAAC,OAAO,CACjB,CAAC;gBACF,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,aAAa,CAAC,UAAU,CAAC,CAAC;AAChD,aAAC,CAAC,CAAC;SACN;QAED,OAAO,GAAA;YACH,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;SACpE;QAED,OAAO,GAAA;YACH,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;SACnE;AAED,QAAA,IAAI,CAAC,IAAI,EAAA;AACL,YAAA,OAAO,UAAU,UAAU,EAAE,MAAM,EAAE,IAAI,GAAG,EAAE,EAAA;AAC1C,gBAAA,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACpD,oBAAA,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAElD,oBAAA,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;AACpB,wBAAA,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AACxD,qBAAA;AACD,oBAAA,IAAI,SAAS,KAAK,UAAU,CAAC,SAAS,EAAE;wBACpC,OAAO,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AACrC,qBAAA;AACD,oBAAA,MAAM,IAAI,KAAK,CAAC,sBAAsB,SAAS,CAAA,CAAE,CAAC,CAAC;AACtD,iBAAA;gBAED,OAAO,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAC1C,aAAC,CAAC;SACL;KACJ,CAAC;AACN"}
@@ -0,0 +1,78 @@
1
+ 'use strict';var server=require('@cdm-logger/server'),serverCore=require('@common-stack/server-core'),inversify=require('inversify'),moleculer=require('moleculer'),core=require('@common-stack/core'),moleculer_config=require('./config/moleculer.config.cjs'),envConfig=require('./config/env-config.cjs'),connectionBroker=require('./connectors/connection-broker.cjs'),moleculerInterNamespace=require('./middleware/moleculer-inter-namespace.cjs');/* eslint-disable import/no-extraneous-dependencies */
2
+ /* eslint-disable import/namespace */
3
+ const infraModule = ({ broker, pubsub, mongoClient, logger }) => new inversify.ContainerModule((bind) => {
4
+ bind('Logger').toConstantValue(logger);
5
+ bind(core.CommonType.LOGGER).toConstantValue(logger);
6
+ bind('Environment').toConstantValue(envConfig.config.NODE_ENV || 'development');
7
+ bind(core.CommonType.ENVIRONMENT).toConstantValue(envConfig.config.NODE_ENV || 'development');
8
+ bind('PubSub').toConstantValue(pubsub);
9
+ bind(core.CommonType.PUBSUB).toConstantValue(pubsub);
10
+ bind(core.CommonType.MOLECULER_BROKER).toConstantValue(broker);
11
+ bind('MoleculerBroker').toConstantValue(broker);
12
+ bind('MongoDBConnection').toConstantValue(mongoClient);
13
+ });
14
+ /**
15
+ * Controls the lifecycle of the Application Server
16
+ *
17
+ * @export
18
+ * @class StackServer
19
+ */
20
+ class StackServer {
21
+ constructor(feature, settings) {
22
+ this.serverFeature = feature;
23
+ this.settings = settings;
24
+ this.logger = server.logger.child({ className: 'StackServer' });
25
+ }
26
+ async initialize() {
27
+ this.logger.info('StackServer initializing');
28
+ this.connectionBroker = new connectionBroker.ConnectionBroker(moleculer_config.default.transporter, this.logger);
29
+ this.connectionBroker.redisDataloaderClient;
30
+ const mongoClient = await this.connectionBroker.mongoConnection;
31
+ this.microserviceBroker = new moleculer.ServiceBroker(Object.assign(Object.assign({}, moleculer_config.default), { middlewares: [
32
+ moleculerInterNamespace.InterNamespaceMiddleware([
33
+ {
34
+ namespace: 'api-admin',
35
+ transporter: moleculer_config.default.transporter,
36
+ },
37
+ ]),
38
+ ], started: async () => {
39
+ await this.serverFeature.microservicePreStart(this.microserviceContainer);
40
+ await this.serverFeature.microservicePostStart(this.microserviceContainer);
41
+ } }));
42
+ const pubsub = await this.connectionBroker.graphqlPubsub;
43
+ const InfraStructureFeature = new serverCore.Feature({
44
+ createHemeraContainerFunc: [
45
+ () => infraModule({
46
+ broker: this.microserviceBroker,
47
+ pubsub,
48
+ mongoClient,
49
+ logger: server.logger,
50
+ }),
51
+ ],
52
+ });
53
+ const allModules = new serverCore.Feature(InfraStructureFeature, this.serverFeature);
54
+ this.microserviceContainer = await allModules.createHemeraContainers(Object.assign(Object.assign({}, this.settings), { mongoConnection: mongoClient }));
55
+ const serviceBroker = {
56
+ microserviceContainer: this.microserviceContainer,
57
+ logger: this.logger,
58
+ };
59
+ // set the service container
60
+ this.microserviceContainer = serviceBroker.microserviceContainer;
61
+ allModules.loadClientMoleculerService({
62
+ broker: this.microserviceBroker,
63
+ container: this.microserviceContainer,
64
+ settings: this.settings,
65
+ });
66
+ }
67
+ async start() {
68
+ await this.microserviceBroker.start();
69
+ }
70
+ async cleanup() {
71
+ if (this.connectionBroker) {
72
+ await this.connectionBroker.stop();
73
+ }
74
+ if (this.microserviceBroker) {
75
+ await this.microserviceBroker.stop();
76
+ }
77
+ }
78
+ }exports.StackServer=StackServer;//# sourceMappingURL=stack-server.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stack-server.cjs","sources":["../src/stack-server.ts"],"sourcesContent":[null],"names":["ContainerModule","CommonType","config","serverLogger","ConnectionBroker","brokerConfig","ServiceBroker","InterNamespaceMiddleware","ServerFeature"],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { Feature as ServerFeature } from '@common-stack/server-core';
2
+ /**
3
+ * Controls the lifecycle of the Application Server
4
+ *
5
+ * @export
6
+ * @class StackServer
7
+ */
8
+ export declare class StackServer {
9
+ private logger;
10
+ private connectionBroker;
11
+ private microserviceBroker;
12
+ private serviceContainer;
13
+ private microserviceContainer;
14
+ private serverFeature;
15
+ private settings;
16
+ constructor(feature: ServerFeature, settings: any);
17
+ initialize(): Promise<void>;
18
+ start(): Promise<void>;
19
+ cleanup(): Promise<void>;
20
+ }
@@ -0,0 +1,78 @@
1
+ import {logger}from'@cdm-logger/server';import {Feature}from'@common-stack/server-core';import {ContainerModule}from'inversify';import {ServiceBroker}from'moleculer';import {CommonType}from'@common-stack/core';import brokerConfig from'./config/moleculer.config.mjs';import {config}from'./config/env-config.mjs';import {ConnectionBroker}from'./connectors/connection-broker.mjs';import {InterNamespaceMiddleware}from'./middleware/moleculer-inter-namespace.mjs';/* eslint-disable import/no-extraneous-dependencies */
2
+ /* eslint-disable import/namespace */
3
+ const infraModule = ({ broker, pubsub, mongoClient, logger }) => new ContainerModule((bind) => {
4
+ bind('Logger').toConstantValue(logger);
5
+ bind(CommonType.LOGGER).toConstantValue(logger);
6
+ bind('Environment').toConstantValue(config.NODE_ENV || 'development');
7
+ bind(CommonType.ENVIRONMENT).toConstantValue(config.NODE_ENV || 'development');
8
+ bind('PubSub').toConstantValue(pubsub);
9
+ bind(CommonType.PUBSUB).toConstantValue(pubsub);
10
+ bind(CommonType.MOLECULER_BROKER).toConstantValue(broker);
11
+ bind('MoleculerBroker').toConstantValue(broker);
12
+ bind('MongoDBConnection').toConstantValue(mongoClient);
13
+ });
14
+ /**
15
+ * Controls the lifecycle of the Application Server
16
+ *
17
+ * @export
18
+ * @class StackServer
19
+ */
20
+ class StackServer {
21
+ constructor(feature, settings) {
22
+ this.serverFeature = feature;
23
+ this.settings = settings;
24
+ this.logger = logger.child({ className: 'StackServer' });
25
+ }
26
+ async initialize() {
27
+ this.logger.info('StackServer initializing');
28
+ this.connectionBroker = new ConnectionBroker(brokerConfig.transporter, this.logger);
29
+ this.connectionBroker.redisDataloaderClient;
30
+ const mongoClient = await this.connectionBroker.mongoConnection;
31
+ this.microserviceBroker = new ServiceBroker(Object.assign(Object.assign({}, brokerConfig), { middlewares: [
32
+ InterNamespaceMiddleware([
33
+ {
34
+ namespace: 'api-admin',
35
+ transporter: brokerConfig.transporter,
36
+ },
37
+ ]),
38
+ ], started: async () => {
39
+ await this.serverFeature.microservicePreStart(this.microserviceContainer);
40
+ await this.serverFeature.microservicePostStart(this.microserviceContainer);
41
+ } }));
42
+ const pubsub = await this.connectionBroker.graphqlPubsub;
43
+ const InfraStructureFeature = new Feature({
44
+ createHemeraContainerFunc: [
45
+ () => infraModule({
46
+ broker: this.microserviceBroker,
47
+ pubsub,
48
+ mongoClient,
49
+ logger: logger,
50
+ }),
51
+ ],
52
+ });
53
+ const allModules = new Feature(InfraStructureFeature, this.serverFeature);
54
+ this.microserviceContainer = await allModules.createHemeraContainers(Object.assign(Object.assign({}, this.settings), { mongoConnection: mongoClient }));
55
+ const serviceBroker = {
56
+ microserviceContainer: this.microserviceContainer,
57
+ logger: this.logger,
58
+ };
59
+ // set the service container
60
+ this.microserviceContainer = serviceBroker.microserviceContainer;
61
+ allModules.loadClientMoleculerService({
62
+ broker: this.microserviceBroker,
63
+ container: this.microserviceContainer,
64
+ settings: this.settings,
65
+ });
66
+ }
67
+ async start() {
68
+ await this.microserviceBroker.start();
69
+ }
70
+ async cleanup() {
71
+ if (this.connectionBroker) {
72
+ await this.connectionBroker.stop();
73
+ }
74
+ if (this.microserviceBroker) {
75
+ await this.microserviceBroker.stop();
76
+ }
77
+ }
78
+ }export{StackServer};//# sourceMappingURL=stack-server.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stack-server.mjs","sources":["../src/stack-server.ts"],"sourcesContent":[null],"names":["serverLogger","ServerFeature"],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,40 @@
1
+ {
2
+ "name": "@common-stack/server-stack",
3
+ "version": "0.5.29",
4
+ "description": "common core for higher packages to depend on",
5
+ "license": "ISC",
6
+ "author": "CDMBase LLC",
7
+ "main": "lib/index.cjs",
8
+ "module": "lib/index.mjs",
9
+ "types": "lib/index.d.ts",
10
+ "files": [
11
+ "lib"
12
+ ],
13
+ "scripts": {
14
+ "build": "yarn build:clean && yarn build:lib",
15
+ "build:clean": "rimraf lib",
16
+ "build:lib": "rollup -c rollup.config.mjs",
17
+ "build:lib:watch": "yarn build:lib -- --watch",
18
+ "jest": "./node_modules/.bin/jest",
19
+ "prepublish": "yarn build",
20
+ "test": "jest",
21
+ "test:debug": "npm test -- --runInBand",
22
+ "test:watch": "npm test -- --watch",
23
+ "watch": "yarn build:lib:watch"
24
+ },
25
+ "dependencies": {
26
+ "@common-stack/server-core": "^0.5.29"
27
+ },
28
+ "peerDependencies": {
29
+ "@cdm-logger/core": ">=7.0.12",
30
+ "envalid": "*",
31
+ "moleculer": "*"
32
+ },
33
+ "publishConfig": {
34
+ "access": "public"
35
+ },
36
+ "gitHead": "4463f38cbb94646a5f8ee74a00f8158e9d36a854",
37
+ "typescript": {
38
+ "definition": "lib/index.d.ts"
39
+ }
40
+ }