@weave-js/core 0.11.1 → 0.13.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 +8 -8
  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 +64 -54
  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 +47 -15
  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 +90 -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 +13 -17
  109. package/lib/transport/messageHandlers.js +199 -206
  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 +58 -6
  115. package/package.json +4 -4
  116. package/lib/cache/base.js +0 -136
@@ -1,21 +1,21 @@
1
- const dgram = require('dgram')
2
- const { getIpList } = require('@weave-js/utils')
3
- const EventEmitter = require('events').EventEmitter
4
- const Codec = require('./codec')
5
- const { getBroadcastAddresses } = require('../utils')
1
+ const dgram = require('dgram');
2
+ const { getIpList } = require('@weave-js/utils');
3
+ const EventEmitter = require('events').EventEmitter;
4
+ const Codec = require('./codec');
5
+ const { getBroadcastAddresses } = require('../utils');
6
6
  const messageTypes = {
7
7
  HELLO: 4
8
- }
8
+ };
9
9
 
10
10
  const createDiscoveryService = (adapter, options) => {
11
- const namespace = adapter.broker.options.namespace
12
- const codec = Codec(options)
13
- const bus = new EventEmitter()
14
- const ips = getIpList(false)
15
- const MESSAGE_TYPE_LENGTH = 1
11
+ const namespace = adapter.broker.options.namespace;
12
+ const codec = Codec(options);
13
+ const bus = new EventEmitter();
14
+ const ips = getIpList(false);
15
+ const MESSAGE_TYPE_LENGTH = 1;
16
16
 
17
- let servers = []
18
- let discoverTimer
17
+ let servers = [];
18
+ let discoverTimer;
19
19
 
20
20
  const startServer = (host, port, multicastAddress) => {
21
21
  return new Promise((resolve, reject) => {
@@ -23,74 +23,74 @@ const createDiscoveryService = (adapter, options) => {
23
23
  const socket = dgram.createSocket({
24
24
  type: options.discovery.type,
25
25
  reuseAddr: options.discovery.udpReuseAddress
26
- })
26
+ });
27
27
 
28
- socket.on('message', onMessage)
28
+ socket.on('message', onMessage);
29
29
 
30
30
  socket.bind({ port, exclusive: true }, () => {
31
31
  try {
32
32
  if (multicastAddress) {
33
- socket.setMulticastInterface(host)
34
- socket.addMembership(multicastAddress, host)
35
- socket.setMulticastTTL(1)
33
+ socket.setMulticastInterface(host);
34
+ socket.addMembership(multicastAddress, host);
35
+ socket.setMulticastTTL(1);
36
36
  // Add destination to socket object
37
37
  Object.defineProperty(socket, 'destinations', {
38
38
  value: [multicastAddress]
39
- })
40
- adapter.log.info(`UDP Server is listening on ${host}:${port}. Membership: ${multicastAddress}`)
39
+ });
40
+ adapter.log.info(`UDP Server is listening on ${host}:${port}. Membership: ${multicastAddress}`);
41
41
  } else {
42
- socket.setBroadcast(true)
42
+ socket.setBroadcast(true);
43
43
  Object.defineProperty(socket, 'destinations', {
44
44
  value: getBroadcastAddresses()
45
- })
45
+ });
46
46
  }
47
47
  } catch (error) {
48
- adapter.log.info(`UDP Multicast membership error: ${error.message}`)
48
+ adapter.log.info(`UDP Multicast membership error: ${error.message}`);
49
49
  }
50
- })
50
+ });
51
51
 
52
- servers.push(socket)
52
+ servers.push(socket);
53
53
 
54
- resolve(socket)
54
+ resolve(socket);
55
55
  } catch (error) {
56
- reject(error)
56
+ reject(error);
57
57
  }
58
- })
59
- }
58
+ });
59
+ };
60
60
 
61
61
  const onMessage = (buffer, info) => {
62
- const messageType = Buffer.prototype.readUInt8.call(buffer, 0)
63
- const payload = buffer.slice(MESSAGE_TYPE_LENGTH)
62
+ const messageType = Buffer.prototype.readUInt8.call(buffer, 0);
63
+ const payload = buffer.slice(MESSAGE_TYPE_LENGTH);
64
64
 
65
65
  switch (messageType) {
66
66
  case messageTypes.HELLO:
67
- const message = codec.decode(payload)
68
- message.host = info.address
67
+ const message = codec.decode(payload);
68
+ message.host = info.address;
69
69
 
70
70
  if (message.namespace === namespace) {
71
- bus.emit('message', message)
71
+ bus.emit('message', message);
72
72
  }
73
- break
73
+ break;
74
74
  default:
75
- adapter.log.debug(`Received an unknown data package from host "${info.address}"`)
75
+ adapter.log.debug(`Received an unknown data package from host "${info.address}"`);
76
76
  }
77
- }
77
+ };
78
78
 
79
79
  function sendMessage (payload) {
80
- const header = Buffer.alloc(MESSAGE_TYPE_LENGTH)
81
- Buffer.prototype.writeUInt8.call(header, messageTypes.HELLO, 0)
80
+ const header = Buffer.alloc(MESSAGE_TYPE_LENGTH);
81
+ Buffer.prototype.writeUInt8.call(header, messageTypes.HELLO, 0);
82
82
 
83
- const message = Buffer.concat([header, codec.encode(payload)])
83
+ const message = Buffer.concat([header, codec.encode(payload)]);
84
84
 
85
85
  servers.forEach(server => {
86
86
  server.destinations.forEach(host => {
87
87
  server.send(message, options.discovery.port, host, (error) => {
88
88
  if (!error) {
89
- adapter.log.verbose(`Message sent to ${host}:${options.discovery.port}`)
89
+ adapter.log.verbose(`Message sent to ${host}:${options.discovery.port}`);
90
90
  }
91
- })
92
- })
93
- })
91
+ });
92
+ });
93
+ });
94
94
  }
95
95
 
96
96
  function sendDiscoveryPackage (port) {
@@ -98,19 +98,19 @@ const createDiscoveryService = (adapter, options) => {
98
98
  namespace: adapter.broker.options.namespace,
99
99
  nodeId: adapter.broker.nodeId,
100
100
  port: port
101
- })
101
+ });
102
102
  }
103
103
 
104
104
  function startDiscovering (port) {
105
- discoverTimer = setInterval(() => sendDiscoveryPackage(port), 2000)
106
- discoverTimer.unref()
105
+ discoverTimer = setInterval(() => sendDiscoveryPackage(port), 2000);
106
+ discoverTimer.unref();
107
107
  }
108
108
 
109
109
  function stopDiscovery () {
110
110
  if (discoverTimer) {
111
- clearInterval(discoverTimer)
112
- discoverTimer = null
113
- adapter.log.info('UDP discovery service stopped')
111
+ clearInterval(discoverTimer);
112
+ discoverTimer = null;
113
+ adapter.log.info('UDP discovery service stopped');
114
114
  }
115
115
  }
116
116
 
@@ -118,32 +118,32 @@ const createDiscoveryService = (adapter, options) => {
118
118
  bus,
119
119
  async start (port) {
120
120
  if (!options.discovery.enabled) {
121
- return Promise.resolve()
121
+ return Promise.resolve();
122
122
  }
123
123
 
124
124
  // UDP Multicast
125
125
  if (options.discovery.udpMulticast) {
126
126
  if (options.discovery.multicastAddress) {
127
- await Promise.all(ips.map(ip => startServer(ip, options.discovery.port, options.discovery.multicastAddress)))
127
+ await Promise.all(ips.map(ip => startServer(ip, options.discovery.port, options.discovery.multicastAddress)));
128
128
  }
129
129
  }
130
130
 
131
131
  // UDP Broadcast
132
132
  if (options.discovery.udpBroadcast) {
133
- await startServer(options.discovery.udpBindAddress, options.discovery.port, options.discovery.multicastAddress)
133
+ await startServer(options.discovery.udpBindAddress, options.discovery.port, options.discovery.multicastAddress);
134
134
  }
135
135
 
136
136
  // send the first dis
137
- const timeout = Math.floor(Math.random() * 500) + 500
138
- setTimeout(() => sendDiscoveryPackage(port), timeout)
139
- startDiscovering(port)
137
+ const timeout = Math.floor(Math.random() * 500) + 500;
138
+ setTimeout(() => sendDiscoveryPackage(port), timeout);
139
+ startDiscovering(port);
140
140
  },
141
141
  close () {
142
- stopDiscovery()
143
- servers.forEach(server => server.close())
144
- servers = []
142
+ stopDiscovery();
143
+ servers.forEach(server => server.close());
144
+ servers = [];
145
145
  }
146
- }
147
- }
146
+ };
147
+ };
148
148
 
149
- module.exports = createDiscoveryService
149
+ module.exports = createDiscoveryService;