@weave-js/core 0.11.1 → 0.12.0

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 (116) hide show
  1. package/.eslintrc.js +1 -1
  2. package/jest.config.js +1 -1
  3. package/lib/ExtendableError.js +7 -7
  4. package/lib/broker/context.js +49 -49
  5. package/lib/broker/defaultOptions.js +8 -9
  6. package/lib/broker/index.js +160 -164
  7. package/lib/buildRuntime.js +34 -34
  8. package/lib/cache/adapters/base.js +50 -74
  9. package/lib/cache/adapters/inMemory.js +58 -58
  10. package/lib/cache/adapters/inMemoryLru.js +57 -57
  11. package/lib/cache/adapters/index.js +3 -39
  12. package/lib/cache/getCacheKeyByObject.js +31 -0
  13. package/lib/cache/getPropertyFromDataOrMetadata.js +20 -0
  14. package/lib/cache/lock.js +30 -24
  15. package/lib/constants.js +5 -5
  16. package/lib/errorHandler.js +8 -8
  17. package/lib/errors.js +35 -35
  18. package/lib/helper/defineAction.js +2 -2
  19. package/lib/helper/defineBrokerOptions.js +2 -2
  20. package/lib/helper/defineService.js +2 -2
  21. package/lib/index.js +21 -21
  22. package/lib/logger/base.js +38 -29
  23. package/lib/logger/format/asHumanReadable.js +15 -15
  24. package/lib/logger/format/asJson.js +10 -10
  25. package/lib/logger/format/index.js +3 -3
  26. package/lib/logger/index.js +24 -24
  27. package/lib/logger/levels.js +21 -21
  28. package/lib/logger/tools.js +15 -15
  29. package/lib/logger/utils/colorize.js +23 -23
  30. package/lib/logger/utils/format.js +75 -65
  31. package/lib/metrics/common.js +47 -47
  32. package/lib/metrics/constants.js +44 -44
  33. package/lib/metrics/exporter/base.js +8 -8
  34. package/lib/metrics/exporter/event.js +20 -20
  35. package/lib/metrics/exporter/index.js +15 -15
  36. package/lib/metrics/index.js +2 -2
  37. package/lib/metrics/types/base.js +20 -20
  38. package/lib/metrics/types/counter.js +6 -6
  39. package/lib/metrics/types/gauge.js +24 -24
  40. package/lib/metrics/types/histogram.js +26 -26
  41. package/lib/metrics/types/index.js +6 -6
  42. package/lib/metrics/types/info.js +17 -17
  43. package/lib/middlewares/action-hooks/index.js +38 -38
  44. package/lib/middlewares/bulkhead/index.js +34 -34
  45. package/lib/middlewares/cache/index.js +37 -37
  46. package/lib/middlewares/circuit-breaker/index.js +62 -62
  47. package/lib/middlewares/context-tracker/index.js +39 -39
  48. package/lib/middlewares/error-handler/index.js +14 -14
  49. package/lib/middlewares/index.js +2 -2
  50. package/lib/middlewares/metrics/getMiddlewareWrapper.js +17 -17
  51. package/lib/middlewares/metrics/index.js +29 -29
  52. package/lib/middlewares/retry/index.js +15 -15
  53. package/lib/middlewares/timeout/index.js +16 -16
  54. package/lib/middlewares/tracing/index.js +37 -37
  55. package/lib/middlewares/tracing/tags.js +6 -6
  56. package/lib/middlewares/validator/index.js +31 -31
  57. package/lib/registry/actionEndpoint.js +8 -8
  58. package/lib/registry/collections/actionCollection.js +39 -35
  59. package/lib/registry/collections/endpointCollection.js +63 -63
  60. package/lib/registry/collections/eventCollection.js +62 -62
  61. package/lib/registry/collections/nodeCollection.js +45 -45
  62. package/lib/registry/collections/serviceCollection.js +61 -55
  63. package/lib/registry/eventEndpoint.js +14 -14
  64. package/lib/registry/load-balancer/base.js +3 -3
  65. package/lib/registry/load-balancer/index.js +7 -7
  66. package/lib/registry/node.js +27 -27
  67. package/lib/registry/registry.js +139 -136
  68. package/lib/registry/service/parseAction.js +16 -16
  69. package/lib/registry/service/parseEvent.js +18 -18
  70. package/lib/registry/service/reduceMixins.js +10 -10
  71. package/lib/registry/service/service.js +72 -72
  72. package/lib/registry/serviceItem.js +21 -21
  73. package/lib/runtime/initActionInvoker.js +21 -21
  74. package/lib/runtime/initCache.js +7 -7
  75. package/lib/runtime/initContextFactory.js +22 -22
  76. package/lib/runtime/initEventbus.js +49 -49
  77. package/lib/runtime/initLogger.js +11 -11
  78. package/lib/runtime/initMetrics.js +54 -54
  79. package/lib/runtime/initMiddlewareManager.js +21 -21
  80. package/lib/runtime/initRegistry.js +6 -6
  81. package/lib/runtime/initServiceManager.js +85 -68
  82. package/lib/runtime/initTracing.js +23 -23
  83. package/lib/runtime/initTransport.js +5 -5
  84. package/lib/runtime/initUuidFactory.js +4 -4
  85. package/lib/runtime/initValidator.js +5 -5
  86. package/lib/tracing/collectors/base.js +22 -22
  87. package/lib/tracing/collectors/event.js +33 -33
  88. package/lib/tracing/collectors/index.js +15 -15
  89. package/lib/tracing/span.js +26 -26
  90. package/lib/tracing/time.js +8 -8
  91. package/lib/transport/InboundTransformStream.js +26 -26
  92. package/lib/transport/adapters/adapteBase.js +30 -30
  93. package/lib/transport/adapters/adapters.js +4 -4
  94. package/lib/transport/adapters/dummy/index.js +18 -18
  95. package/lib/transport/adapters/fromURI.js +13 -13
  96. package/lib/transport/adapters/getAdapterByName.js +5 -5
  97. package/lib/transport/adapters/index.js +12 -12
  98. package/lib/transport/adapters/tcp/discovery/codec.js +4 -4
  99. package/lib/transport/adapters/tcp/discovery/index.js +62 -62
  100. package/lib/transport/adapters/tcp/index.js +169 -171
  101. package/lib/transport/adapters/tcp/tcp-messagetypes.js +7 -7
  102. package/lib/transport/adapters/tcp/tcpReader.js +39 -39
  103. package/lib/transport/adapters/tcp/tcpWriteStream.js +26 -26
  104. package/lib/transport/adapters/tcp/tcpWriter.js +57 -57
  105. package/lib/transport/adapters/tcp/utils.js +12 -12
  106. package/lib/transport/createMessage.js +4 -4
  107. package/lib/transport/createTransport.js +254 -254
  108. package/lib/transport/errorPayloadFactory.js +14 -17
  109. package/lib/transport/messageHandlers.js +200 -200
  110. package/lib/transport/messageTypes.js +19 -19
  111. package/lib/types.js +28 -15
  112. package/lib/utils/index.js +1 -1
  113. package/lib/utils/options.js +44 -44
  114. package/lib/utils/restoreError.js +4 -4
  115. package/package.json +4 -4
  116. package/lib/cache/base.js +0 -136
@@ -6,10 +6,10 @@
6
6
  */
7
7
 
8
8
  // node packages
9
- const { isFunction } = require('@weave-js/utils')
10
- const path = require('path')
11
- const glob = require('glob')
12
- const Middlewares = require('../middlewares')
9
+ const { isFunction } = require('@weave-js/utils');
10
+ const path = require('path');
11
+ const glob = require('glob');
12
+ const Middlewares = require('../middlewares');
13
13
 
14
14
  /**
15
15
  * Creates a new Weave Broker instance
@@ -28,206 +28,202 @@ exports.createBrokerInstance = (runtime) => {
28
28
  validator,
29
29
  log,
30
30
  services,
31
- transport,
32
- metrics,
33
- cache
34
- } = runtime
31
+ transport
32
+ } = runtime;
35
33
 
36
34
  // Log Messages
37
- log.info(`Initializing #weave node version ${version}`)
38
- log.info(`Node Id: ${options.nodeId}`)
35
+ log.info(`Initializing #weave node version ${version}`);
36
+ log.info(`Node Id: ${options.nodeId}`);
39
37
 
40
38
  // Output namespace
41
39
  if (options.namespace) {
42
- log.info(`Namespace: ${options.namespace}`)
40
+ log.info(`Namespace: ${options.namespace}`);
43
41
  }
44
42
 
45
43
  // Init metrics
46
- if (metrics) {
47
- metrics.init()
44
+ if (runtime.metrics) {
45
+ runtime.metrics.init();
48
46
  }
49
47
 
50
48
  // Init cache
51
- if (cache) {
52
- cache.init()
49
+ if (runtime.cache) {
50
+ runtime.cache.init();
53
51
  }
54
52
 
55
53
  // broker object
56
54
  /** @type {Broker} */
57
- const broker = Object.create(null)
58
-
59
- broker.runtime = runtime
60
- broker.registry = registry
61
- broker.bus = bus
62
- broker.nodeId = options.nodeId
63
- broker.version = version
64
- broker.options = options
65
- broker.validator = validator
66
- broker.contextFactory = contextFactory
67
- broker.log = log
68
- broker.createLogger = runtime.createLogger
55
+ const broker = Object.create(null);
56
+
57
+ broker.runtime = runtime;
58
+ broker.registry = registry;
59
+ broker.bus = bus;
60
+ broker.nodeId = options.nodeId;
61
+ broker.version = version;
62
+ broker.options = options;
63
+ broker.validator = validator;
64
+ broker.contextFactory = contextFactory;
65
+ broker.log = log;
66
+ broker.createLogger = runtime.createLogger;
69
67
 
70
68
  broker.getUUID = function () {
71
- return runtime.generateUUID()
72
- }
69
+ return runtime.generateUUID();
70
+ };
73
71
 
74
72
  broker.getNextActionEndpoint = function (actionName, options = {}) {
75
- return registry.getNextAvailableActionEndpoint(actionName, options)
76
- }
73
+ return registry.getNextAvailableActionEndpoint(actionName, options);
74
+ };
77
75
 
78
- broker.emit = eventBus.emit.bind(broker)
76
+ broker.emit = eventBus.emit.bind(broker);
79
77
 
80
- broker.broadcast = eventBus.broadcast.bind(broker)
78
+ broker.broadcast = eventBus.broadcast.bind(broker);
81
79
 
82
- broker.broadcastLocal = eventBus.broadcastLocal.bind(broker)
80
+ broker.broadcastLocal = eventBus.broadcastLocal.bind(broker);
83
81
 
84
- broker.call = runtime.actionInvoker.call.bind(broker)
82
+ broker.call = runtime.actionInvoker.call.bind(broker);
85
83
 
86
- broker.multiCall = runtime.actionInvoker.multiCall.bind(broker)
84
+ broker.multiCall = runtime.actionInvoker.multiCall.bind(broker);
87
85
 
88
- broker.waitForServices = services.waitForServices.bind(broker)
86
+ broker.waitForServices = services.waitForServices.bind(broker);
89
87
 
90
- broker.createService = services.createService.bind(broker)
88
+ broker.createService = services.createService.bind(broker);
91
89
 
92
90
  /**
93
91
  * Global error handler of the broker.
94
92
  * @param {*} error Error
95
93
  * @returns {void}
96
94
  */
97
- broker.handleError = runtime.handleError
95
+ broker.handleError = runtime.handleError;
98
96
 
99
- broker.fatalError = runtime.fatalError
97
+ broker.fatalError = runtime.fatalError;
100
98
 
101
99
  /**
102
100
  * Load and register a service from file.
103
- * @param {string} fileName Path to the service file.
101
+ * @param {string} filename Path to the service file.
104
102
  * @returns {Service} Service
105
103
  */
106
- broker.loadService = function (fileName) {
107
- const filePath = path.resolve(fileName)
108
- const schema = require(filePath)
109
- const service = broker.createService(schema)
110
-
111
- // If the "watchSevrices" option is set - add service to service watcher.
112
- if (options.watchServices) {
113
- service.filename = fileName
114
- services.watchService.call(broker, service)
104
+ broker.loadService = function (filename) {
105
+ const filePath = path.resolve(filename);
106
+ const schema = require(filePath);
107
+ const service = broker.createService(schema);
108
+
109
+ if (service) {
110
+ service.filename = filename;
115
111
  }
116
112
 
117
- return service
118
- }
113
+ return service;
114
+ };
119
115
 
120
116
  broker.loadServices = function (folder = './services', fileMask = '*.service.js') {
121
- const serviceFiles = glob.sync(path.join(folder, fileMask))
117
+ const serviceFiles = glob.sync(path.join(folder, fileMask));
122
118
 
123
- log.info(`Searching services in folder '${folder}' with name pattern '${fileMask}'.`)
124
- log.info(`${serviceFiles.length} services found.`)
119
+ log.info(`Searching services in folder '${folder}' with name pattern '${fileMask}'.`);
120
+ log.info(`${serviceFiles.length} services found.`);
125
121
 
126
- serviceFiles.forEach(fileName => broker.loadService(fileName))
127
- return serviceFiles.length
128
- }
122
+ serviceFiles.forEach(fileName => broker.loadService(fileName));
123
+ return serviceFiles.length;
124
+ };
129
125
 
130
126
  /**
131
127
  * Starts the broker.
132
128
  * @returns {Promise} Promise
133
129
  */
134
130
  broker.start = async function () {
135
- const startTime = Date.now()
136
- await middlewareHandler.callHandlersAsync('starting', [runtime], true)
131
+ const startTime = Date.now();
132
+ await middlewareHandler.callHandlersAsync('starting', [runtime], true);
137
133
 
138
134
  // If transport is used, we connect the transport adapter.
139
135
  if (transport) {
140
- await transport.connect()
136
+ await transport.connect();
141
137
  }
142
138
 
143
139
  try {
144
- await Promise.all(services.serviceList.map(service => service.start()))
140
+ await Promise.all(services.serviceList.map(service => service.start()));
145
141
  } catch (error) {
146
- log.error(error, 'Unable to start all services')
147
- clearInterval(options.waitForServiceInterval)
148
- throw error
142
+ log.error(error, 'Unable to start all services');
143
+ clearInterval(options.waitForServiceInterval);
144
+ throw error;
149
145
  }
150
146
 
151
- runtime.state.isStarted = true
152
- eventBus.broadcastLocal('$broker.started')
147
+ runtime.state.isStarted = true;
148
+ eventBus.broadcastLocal('$broker.started');
153
149
  // refresh local node information
154
- registry.generateLocalNodeInfo(true)
150
+ registry.generateLocalNodeInfo(true);
155
151
 
156
152
  // If transport is used, we set the transport ready to inform the other nodes
157
153
  if (transport) {
158
- await transport.setReady()
154
+ await transport.setReady();
159
155
  }
160
156
 
161
- await middlewareHandler.callHandlersAsync('started', [runtime], true)
157
+ await middlewareHandler.callHandlersAsync('started', [runtime], true);
162
158
 
163
159
  if (runtime.state.isStarted && isFunction(options.started)) {
164
- options.started.call(broker)
160
+ options.started.call(broker);
165
161
  }
166
162
 
167
- const duration = Date.now() - startTime
168
- log.info(`Node "${options.nodeId}" with ${services.serviceList.length} services successfully started in ${duration}ms.`)
169
- }
163
+ const duration = Date.now() - startTime;
164
+ log.info(`Node "${options.nodeId}" with ${services.serviceList.length} services successfully started in ${duration}ms.`);
165
+ };
170
166
 
171
167
  /**
172
168
  * Stops the broker.
173
169
  * @returns {Promise} Promise
174
170
  */
175
171
  broker.stop = async function () {
176
- runtime.state.isStarted = false
177
- log.info('Shutting down the node...')
172
+ runtime.state.isStarted = false;
173
+ log.info('Shutting down the node...');
178
174
 
179
- await middlewareHandler.callHandlersAsync('stopping', [runtime], true)
175
+ await middlewareHandler.callHandlersAsync('stopping', [runtime], true);
180
176
 
181
177
  // Stop services
182
178
  try {
183
- await Promise.all(services.serviceList.map(service => service.stop()))
179
+ await Promise.all(services.serviceList.map(service => service.stop()));
184
180
  } catch (error) {
185
- log.error(error, 'Unable to stop all services.')
186
- throw error
181
+ log.error(error, 'Unable to stop all services.');
182
+ throw error;
187
183
  }
188
184
 
189
185
  // Disconnect transports
190
186
  if (transport) {
191
- await transport.disconnect()
187
+ await transport.disconnect();
192
188
  }
193
189
 
194
190
  // Stop cache
195
191
  if (runtime.cache) {
196
- log.debug('Stopping caching adapters.')
197
- await runtime.cache.stop()
192
+ log.debug('Stopping caching adapters.');
193
+ await runtime.cache.stop();
198
194
  }
199
195
 
200
196
  // Stop metrics
201
197
  if (runtime.metrics) {
202
- log.debug('Stopping metrics.')
203
- await runtime.metrics.stop()
198
+ log.debug('Stopping metrics.');
199
+ await runtime.metrics.stop();
204
200
  }
205
201
 
206
202
  // Stop tracers
207
203
  if (runtime.tracer) {
208
- log.debug('Stopping tracing adapters.')
209
- await runtime.tracer.stop()
204
+ log.debug('Stopping tracing adapters.');
205
+ await runtime.tracer.stop();
210
206
  }
211
207
 
212
208
  // Call "stopped" middleware method.
213
- await middlewareHandler.callHandlersAsync('stopped', [runtime], true)
209
+ await middlewareHandler.callHandlersAsync('stopped', [runtime], true);
214
210
 
215
211
  // Call "stopped" lifecycle hook
216
212
  if (!runtime.state.isStarted && isFunction(options.stopped)) {
217
- options.stopped.call(runtime)
213
+ options.stopped.call(runtime);
218
214
  }
219
215
 
220
- log.info('The node was successfully shut down. Bye bye! 👋')
216
+ log.info('The node was successfully shut down. Bye bye! 👋');
221
217
 
222
- eventBus.broadcastLocal('$broker.stopped')
218
+ eventBus.broadcastLocal('$broker.stopped');
223
219
 
224
- process.removeListener('beforeExit', onClose)
225
- process.removeListener('exit', onClose)
226
- process.removeListener('SIGINT', onClose)
227
- process.removeListener('SIGTERM', onClose)
220
+ process.removeListener('beforeExit', onClose);
221
+ process.removeListener('exit', onClose);
222
+ process.removeListener('SIGINT', onClose);
223
+ process.removeListener('SIGTERM', onClose);
228
224
 
229
225
  // todo: handle errors
230
- }
226
+ };
231
227
 
232
228
  /**
233
229
  * Ping other nodes
@@ -240,167 +236,167 @@ exports.createBrokerInstance = (runtime) => {
240
236
  if (nodeId) {
241
237
  return new Promise((resolve) => {
242
238
  const timeoutTimer = setTimeout(() => {
243
- bus.off('$node.pong', pongHandler)
244
- return resolve(null)
245
- }, timeout)
239
+ bus.off('$node.pong', pongHandler);
240
+ return resolve(null);
241
+ }, timeout);
246
242
 
247
243
  const pongHandler = pong => {
248
- clearTimeout(timeoutTimer)
249
- bus.off('$node.pong', pongHandler)
250
- resolve(pong)
251
- }
252
-
253
- bus.on('$node.pong', pongHandler)
254
- transport.sendPing(nodeId)
255
- })
244
+ clearTimeout(timeoutTimer);
245
+ bus.off('$node.pong', pongHandler);
246
+ resolve(pong);
247
+ };
248
+
249
+ bus.on('$node.pong', pongHandler);
250
+ transport.sendPing(nodeId);
251
+ });
256
252
  } else {
257
253
  // handle arrays
258
- const pongs = {}
254
+ const pongs = {};
259
255
 
260
256
  const nodes = registry.nodeCollection.list({})
261
257
  .filter(node => !node.isLocal)
262
- .map(node => node.id)
258
+ .map(node => node.id);
263
259
 
264
- const onFlight = new Set(nodes)
260
+ const onFlight = new Set(nodes);
265
261
 
266
262
  nodes.forEach(nodeId => {
267
- pongs[nodeId] = null
268
- })
263
+ pongs[nodeId] = null;
264
+ });
269
265
 
270
266
  return new Promise((resolve) => {
271
267
  // todo: handle timeout
272
268
  const timeoutTimer = setTimeout(() => {
273
- bus.off('$node.pong', pongHandler)
274
- resolve(pongs)
275
- }, timeout)
269
+ bus.off('$node.pong', pongHandler);
270
+ resolve(pongs);
271
+ }, timeout);
276
272
 
277
273
  const pongHandler = pong => {
278
- pongs[pong.nodeId] = pong
279
- onFlight.delete(pong.nodeId)
274
+ pongs[pong.nodeId] = pong;
275
+ onFlight.delete(pong.nodeId);
280
276
  if (onFlight.size === 0) {
281
- clearTimeout(timeoutTimer)
282
- bus.off('$node.pong', pongHandler)
283
- resolve(pongs)
277
+ clearTimeout(timeoutTimer);
278
+ bus.off('$node.pong', pongHandler);
279
+ resolve(pongs);
284
280
  }
285
- }
281
+ };
286
282
 
287
- bus.on('$node.pong', pongHandler)
288
- nodes.map(nodeId => transport.sendPing(nodeId))
289
- })
283
+ bus.on('$node.pong', pongHandler);
284
+ nodes.map(nodeId => transport.sendPing(nodeId));
285
+ });
290
286
  }
291
287
  }
292
288
 
293
- return Promise.resolve(nodeId ? null : {})
294
- }
289
+ return Promise.resolve(nodeId ? null : {});
290
+ };
295
291
 
296
292
  // Register internal broker events
297
293
  broker.bus.on('$node.disconnected', ({ nodeId }) => {
298
- runtime.transport.removePendingRequestsByNodeId(nodeId)
299
- services.serviceChanged(false)
300
- })
294
+ runtime.transport.removePendingRequestsByNodeId(nodeId);
295
+ services.serviceChanged(false);
296
+ });
301
297
 
302
298
  /**
303
299
  * Register middlewares
304
300
  * @param {Array<Object>} customMiddlewares Array of user defined middlewares
305
301
  * @returns {void}
306
302
  */
307
- const registerMiddlewares = customMiddlewares => {
303
+ const registerMiddlewares = (customMiddlewares) => {
308
304
  // Register custom middlewares
309
305
  if (Array.isArray(customMiddlewares) && customMiddlewares.length > 0) {
310
- customMiddlewares.forEach(middleware => middlewareHandler.add(middleware))
306
+ customMiddlewares.forEach(middleware => middlewareHandler.add(middleware));
311
307
  }
312
308
 
313
309
  // Add the built-in middlewares. (The order is important)
314
310
  if (options.loadInternalMiddlewares) {
315
- middlewareHandler.add(Middlewares.ActionHooks)
311
+ middlewareHandler.add(Middlewares.ActionHooks);
316
312
 
317
313
  // Validator middleware
318
314
  if (options.validateActionParams && validator) {
319
- middlewareHandler.add(Middlewares.Validator)
315
+ middlewareHandler.add(Middlewares.Validator);
320
316
  }
321
317
 
322
318
  // Bulkhead
323
319
  if (options.bulkhead.enabled) {
324
- middlewareHandler.add(Middlewares.Bulkhead)
320
+ middlewareHandler.add(Middlewares.Bulkhead);
325
321
  }
326
322
 
327
323
  // Cache
328
324
  if (runtime.cache) {
329
- middlewareHandler.add(Middlewares.Cache)
325
+ middlewareHandler.add(Middlewares.Cache);
330
326
  }
331
327
 
332
328
  // Context tracking
333
329
  if (options.contextTracking.enabled) {
334
- middlewareHandler.add(Middlewares.ContextTracker)
330
+ middlewareHandler.add(Middlewares.ContextTracker);
335
331
  }
336
332
 
337
333
  // Circuit breaker
338
334
  if (options.circuitBreaker.enabled) {
339
- middlewareHandler.add(Middlewares.CircuitBreaker)
335
+ middlewareHandler.add(Middlewares.CircuitBreaker);
340
336
  }
341
337
 
342
338
  // timeout middleware
343
- middlewareHandler.add(Middlewares.Timeout)
339
+ middlewareHandler.add(Middlewares.Timeout);
344
340
 
345
341
  // Retry policy
346
342
  if (options.retryPolicy.enabled) {
347
- middlewareHandler.add(Middlewares.Retry)
343
+ middlewareHandler.add(Middlewares.Retry);
348
344
  }
349
345
 
350
346
  // Error handler
351
- middlewareHandler.add(Middlewares.ErrorHandler)
347
+ middlewareHandler.add(Middlewares.ErrorHandler);
352
348
 
353
349
  // Tracing
354
350
  if (options.tracing.enabled) {
355
- middlewareHandler.add(Middlewares.Tracing)
351
+ middlewareHandler.add(Middlewares.Tracing);
356
352
  }
357
353
 
358
354
  // Metrics
359
355
  if (options.metrics.enabled) {
360
- middlewareHandler.add(Middlewares.Metrics)
356
+ middlewareHandler.add(Middlewares.Metrics);
361
357
  }
362
358
  }
363
359
 
364
360
  // Wrap runtime and broker methods for middlewares
365
- runtime.actionInvoker.call = middlewareHandler.wrapMethod('call', runtime.actionInvoker.call)
366
- runtime.actionInvoker.multiCall = middlewareHandler.wrapMethod('multiCall', broker.multiCall)
367
- runtime.eventBus.emit = middlewareHandler.wrapMethod('emit', runtime.eventBus.emit)
368
- runtime.eventBus.broadcast = middlewareHandler.wrapMethod('broadcast', runtime.eventBus.broadcast)
369
- runtime.eventBus.broadcastLocal = middlewareHandler.wrapMethod('broadcastLocal', runtime.eventBus.broadcastLocal)
361
+ runtime.actionInvoker.call = middlewareHandler.wrapMethod('call', runtime.actionInvoker.call);
362
+ runtime.actionInvoker.multiCall = middlewareHandler.wrapMethod('multiCall', broker.multiCall);
363
+ runtime.eventBus.emit = middlewareHandler.wrapMethod('emit', runtime.eventBus.emit);
364
+ runtime.eventBus.broadcast = middlewareHandler.wrapMethod('broadcast', runtime.eventBus.broadcast);
365
+ runtime.eventBus.broadcastLocal = middlewareHandler.wrapMethod('broadcastLocal', runtime.eventBus.broadcastLocal);
370
366
 
371
367
  // Wrap broker methods
372
- broker.createService = middlewareHandler.wrapMethod('createService', broker.createService)
373
- broker.loadService = middlewareHandler.wrapMethod('loadService', broker.loadService)
374
- broker.loadServices = middlewareHandler.wrapMethod('loadServices', broker.loadServices)
375
- broker.ping = middlewareHandler.wrapMethod('ping', broker.ping)
376
- }
368
+ broker.createService = middlewareHandler.wrapMethod('createService', broker.createService);
369
+ broker.loadService = middlewareHandler.wrapMethod('loadService', broker.loadService);
370
+ broker.loadServices = middlewareHandler.wrapMethod('loadServices', broker.loadServices);
371
+ broker.ping = middlewareHandler.wrapMethod('ping', broker.ping);
372
+ };
377
373
 
378
374
  // Run "beforeRegisterMiddlewares" hook
379
375
  if (isFunction(options.beforeRegisterMiddlewares)) {
380
- options.beforeRegisterMiddlewares.call(broker, { broker, runtime })
376
+ options.beforeRegisterMiddlewares.call(broker, { broker, runtime });
381
377
  }
382
378
 
383
379
  // Register middlewares
384
- registerMiddlewares(options.middlewares)
380
+ registerMiddlewares(options.middlewares);
385
381
 
386
382
  // Stop the broker greaceful
387
383
  /* istanbul ignore next */
388
384
  const onClose = () => broker.stop()
389
385
  .catch(error => broker.log.error(error))
390
- .then(() => process.exit(0))
386
+ .then(() => process.exit(0));
391
387
 
392
388
  // SIGTERM listener
393
- process.setMaxListeners(0)
394
- process.on('beforeExit', onClose)
395
- process.on('exit', onClose)
396
- process.on('SIGINT', onClose)
397
- process.on('SIGTERM', onClose)
389
+ process.setMaxListeners(0);
390
+ process.on('beforeExit', onClose);
391
+ process.on('exit', onClose);
392
+ process.on('SIGINT', onClose);
393
+ process.on('SIGTERM', onClose);
398
394
 
399
395
  // Add broker reference to runtime
400
- Object.assign(runtime, { broker })
396
+ Object.assign(runtime, { broker });
401
397
 
402
398
  // Call middleware hook for broker created.
403
- middlewareHandler.callHandlersSync('created', [runtime])
399
+ middlewareHandler.callHandlersSync('created', [runtime]);
404
400
 
405
- return broker
406
- }
401
+ return broker;
402
+ };
@@ -4,23 +4,23 @@
4
4
  * @typedef {import('./types.js').Broker} Broker
5
5
  */
6
6
 
7
- const { initLogger } = require('./runtime/initLogger')
8
- const { initMiddlewareHandler } = require('./runtime/initMiddlewareManager')
9
- const { initRegistry } = require('./runtime/initRegistry')
10
- const { initContextFactory } = require('./runtime/initContextFactory')
11
- const { initEventbus } = require('./runtime/initEventbus')
12
- const { initValidator } = require('./runtime/initValidator')
13
- const { initTransport } = require('./runtime/initTransport')
14
- const { initCache } = require('./runtime/initCache')
15
- const { initActionInvoker } = require('./runtime/initActionInvoker')
16
- const { initServiceManager } = require('./runtime/initServiceManager')
17
- const { initMetrics } = require('./runtime/initMetrics')
18
- const { initTracer } = require('./runtime/initTracing')
19
- const { initUUIDFactory } = require('./runtime/initUuidFactory')
20
- const { errorHandler, fatalErrorHandler } = require('./errorHandler')
21
- const { uuid } = require('@weave-js/utils')
22
- const { version } = require('../package.json')
23
- const EventEmitter = require('eventemitter2')
7
+ const { initLogger } = require('./runtime/initLogger');
8
+ const { initMiddlewareHandler } = require('./runtime/initMiddlewareManager');
9
+ const { initRegistry } = require('./runtime/initRegistry');
10
+ const { initContextFactory } = require('./runtime/initContextFactory');
11
+ const { initEventbus } = require('./runtime/initEventbus');
12
+ const { initValidator } = require('./runtime/initValidator');
13
+ const { initTransport } = require('./runtime/initTransport');
14
+ const { initCache } = require('./runtime/initCache');
15
+ const { initActionInvoker } = require('./runtime/initActionInvoker');
16
+ const { initServiceManager } = require('./runtime/initServiceManager');
17
+ const { initMetrics } = require('./runtime/initMetrics');
18
+ const { initTracer } = require('./runtime/initTracing');
19
+ const { initUUIDFactory } = require('./runtime/initUuidFactory');
20
+ const { errorHandler, fatalErrorHandler } = require('./errorHandler');
21
+ const { uuid } = require('@weave-js/utils');
22
+ const { version } = require('../package.json');
23
+ const EventEmitter = require('eventemitter2');
24
24
 
25
25
  /**
26
26
  * Build runtime object
@@ -35,7 +35,7 @@ exports.initRuntime = (options) => {
35
35
  const bus = new EventEmitter({
36
36
  wildcard: true,
37
37
  maxListeners: 1000
38
- })
38
+ });
39
39
 
40
40
  // Create base runtime object
41
41
  const runtime = {
@@ -49,22 +49,22 @@ exports.initRuntime = (options) => {
49
49
  },
50
50
  handleError: (error) => errorHandler(runtime, error),
51
51
  fatalError: (message, error, killProcess) => fatalErrorHandler(runtime, message, error, killProcess)
52
- }
52
+ };
53
53
 
54
54
  // Init modules
55
- initLogger(runtime)
56
- initUUIDFactory(runtime)
57
- initMiddlewareHandler(runtime)
58
- initRegistry(runtime)
59
- initContextFactory(runtime)
60
- initEventbus(runtime)
61
- initValidator(runtime)
62
- initTransport(runtime)
63
- initCache(runtime)
64
- initActionInvoker(runtime)
65
- initServiceManager(runtime)
66
- initMetrics(runtime)
67
- initTracer(runtime)
55
+ initLogger(runtime);
56
+ initUUIDFactory(runtime);
57
+ initMiddlewareHandler(runtime);
58
+ initRegistry(runtime);
59
+ initContextFactory(runtime);
60
+ initEventbus(runtime);
61
+ initValidator(runtime);
62
+ initTransport(runtime);
63
+ initCache(runtime);
64
+ initActionInvoker(runtime);
65
+ initServiceManager(runtime);
66
+ initMetrics(runtime);
67
+ initTracer(runtime);
68
68
 
69
- return runtime
70
- }
69
+ return runtime;
70
+ };