@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,53 +1,51 @@
1
- const { createServiceFromSchema } = require('../registry/service/service.js')
2
- const { WeaveError } = require('../errors')
3
- const { debounce } = require('@weave-js/utils')
4
- const fs = require('fs')
1
+ const { createServiceFromSchema } = require('../registry/service/service.js');
2
+ const { WeaveError } = require('../errors');
5
3
 
6
4
  exports.initServiceManager = (runtime) => {
7
- const { options, log, eventBus, transport, state, registry, handleError } = runtime
5
+ const { options, log, eventBus, transport, state, registry, handleError } = runtime;
8
6
 
9
7
  // Internal service list
10
- const serviceList = []
8
+ const serviceList = [];
11
9
 
12
10
  const serviceChanged = (isLocalService = false) => {
13
11
  // Send local notification.
14
- eventBus.broadcastLocal('$services.changed', { isLocalService })
12
+ eventBus.broadcastLocal('$services.changed', { isLocalService });
15
13
 
16
14
  // If the service is a local service - send current node information to other nodes
17
15
  if (state.isStarted && isLocalService && transport) {
18
- transport.sendNodeInfo()
16
+ transport.sendNodeInfo();
19
17
  }
20
- }
21
-
22
- const destroyService = (service) => Promise.resolve()
23
- .then(() => service.stop())
24
- .then(() => log.info(`Service "${service.name}" was stopped.`))
25
- .then(() => {
26
- registry.deregisterService(service.name, service.version)
27
- log.info(`Service "${service.name}" was deregistered.`)
28
- // Remove service from service store.
29
- serviceList.splice(serviceList.indexOf(service), 1)
30
- // Fire services changed event
31
- serviceChanged(true)
32
- return Promise.resolve()
33
- })
34
- .catch(error => log.error(error, `Unable to stop service "${service.name}"`))
18
+ };
19
+
20
+ // const destroyService = (service) => Promise.resolve()
21
+ // .then(() => service.stop())
22
+ // .then(() => log.info(`Service "${service.name}" was stopped.`))
23
+ // .then(() => {
24
+ // registry.deregisterService(service.name, service.version)
25
+ // log.info(`Service "${service.name}" was deregistered.`)
26
+ // // Remove service from service store.
27
+ // serviceList.splice(serviceList.indexOf(service), 1)
28
+ // // Fire services changed event
29
+ // serviceChanged(true)
30
+ // return Promise.resolve()
31
+ // })
32
+ // .catch(error => log.error(error, `Unable to stop service "${service.name}"`))
35
33
 
36
34
  // `onServiceFileChanged` only triggered by the file watcher
37
- const onServiceFileChanged = async (service) => {
38
- const filename = service.filename
35
+ // const onServiceFileChanged = async (service) => {
36
+ // const filename = service.filename;
39
37
 
40
- // Clear the require cache
41
- Object.keys(require.cache).forEach(key => {
42
- if (key === filename) {
43
- delete require.cache[key]
44
- }
45
- })
38
+ // // Clear the require cache
39
+ // Object.keys(require.cache).forEach(key => {
40
+ // if (key === filename) {
41
+ // delete require.cache[key];
42
+ // }
43
+ // });
46
44
 
47
- // Service has changed - 1. destroy the service, then reload it
48
- await destroyService(service)
49
- await runtime.broker.loadService(filename)
50
- }
45
+ // // Service has changed - 1. destroy the service, then reload it
46
+ // await destroyService(service);
47
+ // await runtime.broker.loadService(filename);
48
+ // };
51
49
 
52
50
  Object.defineProperty(runtime, 'services', {
53
51
  value: {
@@ -55,17 +53,17 @@ exports.initServiceManager = (runtime) => {
55
53
  serviceChanged,
56
54
  createService (schema) {
57
55
  try {
58
- const newService = createServiceFromSchema(runtime, schema)
56
+ const newService = createServiceFromSchema(runtime, schema);
59
57
 
60
- // if the broker is already startet, we need to start the service.
58
+ // if the broker is already started, we need to start the service.
61
59
  if (runtime.state.isStarted) {
62
- newService.start().catch(error => log.error(`Unable to start service ${newService.name}: ${error}`))
60
+ newService.start().catch(error => log.error(`Unable to start service ${newService.name}: ${error}`));
63
61
  }
64
62
 
65
- return newService
63
+ return newService;
66
64
  } catch (error) {
67
- log.error(error)
68
- handleError(error)
65
+ log.error(error);
66
+ handleError(error);
69
67
  }
70
68
  },
71
69
  /**
@@ -77,52 +75,76 @@ exports.initServiceManager = (runtime) => {
77
75
  */
78
76
  waitForServices (serviceNames, timeout, interval = 500) {
79
77
  if (!Array.isArray(serviceNames)) {
80
- serviceNames = [serviceNames]
78
+ serviceNames = [serviceNames];
81
79
  }
82
80
 
83
- const startTimestamp = Date.now()
81
+ const startTimestamp = Date.now();
84
82
  return new Promise((resolve, reject) => {
85
83
  // todo: add timout for service waiter
86
- log.warn(`Waiting for services '${serviceNames.join(',')}'`)
84
+ log.warn(`Waiting for services '${serviceNames.join(',')}'`);
87
85
 
88
86
  const serviceCheck = () => {
89
- const count = serviceNames.filter(serviceName => registry.hasService(serviceName))
87
+ const count = serviceNames.filter(serviceName => registry.hasService(serviceName));
90
88
 
91
- log.warn(`${count.length} services of ${serviceNames.length} available. Waiting...`)
89
+ log.warn(`${count.length} services of ${serviceNames.length} available. Waiting...`);
92
90
 
93
91
  if (count.length === serviceNames.length) {
94
- return resolve()
92
+ return resolve();
95
93
  }
96
94
 
97
95
  if (timeout && (Date.now() - startTimestamp) > timeout) {
98
- return reject(new WeaveError('The waiting of the services is interrupted due to a timeout.', 500, 'WAIT_FOR_SERVICE', { services: serviceNames }))
96
+ return reject(new WeaveError('The waiting of the services is interrupted due to a timeout.', {
97
+ code: 'WAIT_FOR_SERVICE',
98
+ data: {
99
+ services: serviceNames
100
+ }
101
+ }));
99
102
  }
100
103
 
101
- options.waitForServiceInterval = setTimeout(serviceCheck, interval)
102
- }
104
+ options.waitForServiceInterval = setTimeout(serviceCheck, interval);
105
+ };
103
106
 
104
- serviceCheck()
105
- })
107
+ serviceCheck();
108
+ });
106
109
  },
110
+ /**
111
+ * Destroy a service
112
+ * @param {Service} service Service
113
+ * @returns {Promise<any>} result
114
+ */
115
+ async destroyService (service) {
116
+ try {
117
+ // Stop the service
118
+ await service.stop();
119
+ log.info(`Service "${service.name}" was stopped.`);
120
+
121
+ // Deregister the service and remove it from the service list
122
+ registry.deregisterService(service.name, service.version);
123
+ serviceList.splice(serviceList.indexOf(service), 1);
124
+ log.info(`Service "${service.name}" was deregistered.`);
125
+ serviceChanged(true);
126
+ } catch (error) {
127
+ log.error(error, `Unable to stop service "${service.name}"`);
128
+ }
129
+ }
107
130
  /**
108
131
  * Watch a Service object for changes.
109
132
  * @param {Service} service Service object
110
133
  * @return {void}
111
134
  */
112
- watchService: (service) => {
113
- if (service.filename && onServiceFileChanged) {
114
- // Create debounced service changed reference
115
- const debouncedOnServiceChange = debounce(onServiceFileChanged, 500)
116
-
117
- // Watch file changes
118
- const watcher = fs.watch(service.filename, (eventType, filename) => {
119
- log.info(`The Service ${service.name} has been changed. (${eventType}, ${filename})`)
120
- watcher.close()
121
- debouncedOnServiceChange(service)
122
- })
123
- }
124
- },
125
- destroyService
135
+ // watchService: (service) => {
136
+ // if (service.filename && onServiceFileChanged) {
137
+ // // Create debounced service changed reference
138
+ // const debouncedOnServiceChange = debounce(onServiceFileChanged, 500);
139
+
140
+ // // Watch file changes
141
+ // const watcher = fs.watch(service.filename, (eventType, filename) => {
142
+ // log.info(`The Service ${service.name} has been changed. (${eventType}, ${filename})`);
143
+ // watcher.close();
144
+ // debouncedOnServiceChange(service);
145
+ // });
146
+ // }
147
+ // }
126
148
  }
127
- })
128
- }
149
+ });
150
+ };
@@ -1,11 +1,11 @@
1
- const { resolveCollector } = require('../tracing/collectors')
2
- const { createSpan } = require('../tracing/span')
1
+ const { resolveCollector } = require('../tracing/collectors');
2
+ const { createSpan } = require('../tracing/span');
3
3
 
4
4
  exports.initTracer = (runtime) => {
5
- const options = runtime.options.tracing
6
- const log = runtime.createLogger('TRACER')
7
- let collectors = []
8
- let samplingCounter = 0
5
+ const options = runtime.options.tracing;
6
+ const log = runtime.createLogger('TRACER');
7
+ let collectors = [];
8
+ let samplingCounter = 0;
9
9
 
10
10
  Object.defineProperty(runtime, 'tracer', {
11
11
  value: {
@@ -14,52 +14,52 @@ exports.initTracer = (runtime) => {
14
14
  log,
15
15
  async stop () {
16
16
  if (collectors.length > 0) {
17
- return await Promise.all(collectors.map(collector => collector.stop()))
17
+ return await Promise.all(collectors.map(collector => collector.stop()));
18
18
  }
19
19
  },
20
20
  shouldSample (span) {
21
21
  // check span priority
22
22
  if (options.samplingRate === 0) {
23
- return false
23
+ return false;
24
24
  }
25
25
 
26
26
  if (options.samplingRate === 1) {
27
- return true
27
+ return true;
28
28
  }
29
29
 
30
30
  if (++samplingCounter * this.options.samplingRate >= 1) {
31
- samplingCounter = 0
32
- return true
31
+ samplingCounter = 0;
32
+ return true;
33
33
  }
34
34
 
35
- return false
35
+ return false;
36
36
  },
37
37
  invokeCollectorMethod (method, args) {
38
- collectors.map(collector => collector[method].apply(collector, args))
38
+ collectors.map(collector => collector[method].apply(collector, args));
39
39
  },
40
40
  startSpan (name, options) {
41
41
  const span = createSpan(this, name, Object.assign({
42
42
  type: 'custom'
43
- }, options))
43
+ }, options));
44
44
 
45
- span.start()
45
+ span.start();
46
46
 
47
- return span
47
+ return span;
48
48
  }
49
49
  }
50
- })
50
+ });
51
51
 
52
52
  // Init collectors
53
53
  if (options.enabled) {
54
- log.info('Tracer initialized.')
54
+ log.info('Tracer initialized.');
55
55
 
56
56
  if (options.collectors) {
57
57
  collectors = options.collectors
58
58
  .map(entry => {
59
- const initCollector = resolveCollector(runtime, entry, this)
60
- initCollector.init(runtime)
61
- return initCollector
62
- })
59
+ const initCollector = resolveCollector(runtime, entry, this);
60
+ initCollector.init(runtime);
61
+ return initCollector;
62
+ });
63
63
  }
64
64
  }
65
- }
65
+ };
@@ -2,16 +2,16 @@
2
2
  * @typedef {import('../types').TransportAdapter} TransportAdapter
3
3
  **/
4
4
 
5
- const { createTransport } = require('../transport/createTransport')
6
- const TransportAdapters = require('../transport/adapters')
5
+ const { createTransport } = require('../transport/createTransport');
6
+ const TransportAdapters = require('../transport/adapters');
7
7
 
8
8
  exports.initTransport = (runtime) => {
9
9
  if (runtime.options.transport.adapter) {
10
10
  /** @type {TransportAdapter} */
11
- const adapter = TransportAdapters.resolve(runtime, runtime.options.transport)
11
+ const adapter = TransportAdapters.resolve(runtime, runtime.options.transport);
12
12
 
13
13
  Object.defineProperty(runtime, 'transport', {
14
14
  value: createTransport(runtime, adapter)
15
- })
15
+ });
16
16
  }
17
- }
17
+ };
@@ -2,7 +2,7 @@
2
2
  * @typedef {import('../types.js').Runtime} Runtime
3
3
  */
4
4
 
5
- const { isFunction, uuid } = require('@weave-js/utils')
5
+ const { isFunction, uuid } = require('@weave-js/utils');
6
6
 
7
7
  /**
8
8
  * Init uuid Generator and attach it to our runtime object.
@@ -10,7 +10,7 @@ const { isFunction, uuid } = require('@weave-js/utils')
10
10
  * @returns {void}
11
11
  */
12
12
  exports.initUUIDFactory = (runtime) => {
13
- const { options } = runtime
13
+ const { options } = runtime;
14
14
 
15
- runtime.generateUUID = (options.uuidFactory && isFunction(options.uuidFactory)) ? () => options.uuidFactory(runtime) : uuid
16
- }
15
+ runtime.generateUUID = (options.uuidFactory && isFunction(options.uuidFactory)) ? () => options.uuidFactory(runtime) : uuid;
16
+ };
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Author: Kevin Ries (kevin@fachw3rk.de)
2
+ * Author: Kevin Ries (kevin.ries@fachwerk.io)
3
3
  * -----
4
4
  * Copyright 2021 Fachwerk
5
5
  */
@@ -8,7 +8,7 @@
8
8
  * @typedef {import('../types.js').Runtime} Runtime
9
9
  */
10
10
 
11
- const ObjectValidator = require('@weave-js/validator')
11
+ const ObjectValidator = require('@weave-js/validator');
12
12
 
13
13
  /**
14
14
  * Init validator and attach it to our runtime object.
@@ -16,11 +16,11 @@ const ObjectValidator = require('@weave-js/validator')
16
16
  * @returns {void}
17
17
  */
18
18
  exports.initValidator = (runtime) => {
19
- const validator = ObjectValidator()
19
+ const validator = ObjectValidator();
20
20
 
21
21
  Object.defineProperty(runtime, 'validator', {
22
22
  value: {
23
23
  ...validator
24
24
  }
25
- })
26
- }
25
+ });
26
+ };
@@ -1,52 +1,52 @@
1
- const { isObject, pick } = require('@weave-js/utils')
1
+ const { isObject, pick } = require('@weave-js/utils');
2
2
 
3
3
  exports.createBaseTracingCollector = (runtime) => {
4
- const baseTracingCollector = Object.create(null)
4
+ const baseTracingCollector = Object.create(null);
5
5
 
6
- baseTracingCollector.options = runtime.tracer.options
6
+ baseTracingCollector.options = runtime.tracer.options;
7
7
 
8
8
  baseTracingCollector.init = (runtime) => {
9
- baseTracingCollector.runtime = runtime
10
- baseTracingCollector.tracer = runtime.tracer
11
- }
9
+ baseTracingCollector.runtime = runtime;
10
+ baseTracingCollector.tracer = runtime.tracer;
11
+ };
12
12
 
13
13
  baseTracingCollector.startedSpan = () => {
14
14
  // throw new WeaveError('not implemented.')
15
- }
15
+ };
16
16
 
17
17
  baseTracingCollector.finishedSpan = () => {
18
18
  // throw new WeaveError('not implemented.')
19
- }
19
+ };
20
20
 
21
21
  baseTracingCollector.stop = () => {
22
22
  // throw new WeaveError('not implemented.')
23
- }
23
+ };
24
24
 
25
25
  baseTracingCollector.flattenTags = (obj, convertToString = false, path = '') => {
26
26
  if (!obj) {
27
- return null
27
+ return null;
28
28
  }
29
29
 
30
30
  return Object.keys(obj).reduce((res, k) => {
31
- const o = obj[k]
32
- const pp = (path ? path + '.' : '') + k
31
+ const o = obj[k];
32
+ const pp = (path ? path + '.' : '') + k;
33
33
 
34
34
  if (isObject(o)) {
35
- Object.assign(res, baseTracingCollector.flattenTags(o, convertToString, pp))
35
+ Object.assign(res, baseTracingCollector.flattenTags(o, convertToString, pp));
36
36
  } else if (o !== undefined) {
37
- res[pp] = convertToString ? String(o) : o
37
+ res[pp] = convertToString ? String(o) : o;
38
38
  }
39
39
 
40
- return res
41
- }, {})
42
- }
40
+ return res;
41
+ }, {});
42
+ };
43
43
 
44
44
  baseTracingCollector.getErrorFields = (err, fields) => {
45
45
  if (!err) {
46
- return null
46
+ return null;
47
47
  }
48
- return pick(err, fields)
49
- }
48
+ return pick(err, fields);
49
+ };
50
50
 
51
- return baseTracingCollector
52
- }
51
+ return baseTracingCollector;
52
+ };
@@ -1,4 +1,4 @@
1
- const { createBaseTracingCollector } = require('./base')
1
+ const { createBaseTracingCollector } = require('./base');
2
2
 
3
3
  const mergeDefaultOptions = (options) => {
4
4
  return Object.assign({
@@ -7,80 +7,80 @@ const mergeDefaultOptions = (options) => {
7
7
  sendStartSpan: false,
8
8
  sendFinishedSpan: true,
9
9
  broadcast: false
10
- }, options)
11
- }
10
+ }, options);
11
+ };
12
12
 
13
13
  module.exports = (options) => (runtime, tracer) => {
14
- options = mergeDefaultOptions(options)
14
+ options = mergeDefaultOptions(options);
15
15
 
16
- const exporter = createBaseTracingCollector(runtime)
16
+ const exporter = createBaseTracingCollector(runtime);
17
17
 
18
- exporter.init(runtime, tracer)
18
+ exporter.init(runtime, tracer);
19
19
 
20
- const queue = []
20
+ const queue = [];
21
21
 
22
- let timer
22
+ let timer;
23
23
 
24
24
  const generateTracingData = () => {
25
25
  return Array
26
26
  .from(queue)
27
27
  .map(span => {
28
- const newSpan = Object.assign({}, span)
28
+ const newSpan = Object.assign({}, span);
29
29
 
30
30
  if (newSpan.error) {
31
- newSpan.error = exporter.getErrorFields(newSpan.error, exporter.options.errors.fields)
31
+ newSpan.error = exporter.getErrorFields(newSpan.error, exporter.options.errors.fields);
32
32
  }
33
33
 
34
- return newSpan
35
- })
36
- }
34
+ return newSpan;
35
+ });
36
+ };
37
37
 
38
38
  const flushQueue = () => {
39
- if (queue.length === 0) return
39
+ if (queue.length === 0) return;
40
40
 
41
- const data = generateTracingData()
42
- queue.length = 0
41
+ const data = generateTracingData();
42
+ queue.length = 0;
43
43
 
44
44
  if (options.broadcast) {
45
- exporter.runtime.eventBus.broadcast(options.eventName, data)
45
+ exporter.runtime.eventBus.broadcast(options.eventName, data);
46
46
  } else {
47
- exporter.runtime.eventBus.emit(options.eventName, data)
47
+ exporter.runtime.eventBus.emit(options.eventName, data);
48
48
  }
49
- }
49
+ };
50
50
 
51
51
  if (options.interval > 0) {
52
- timer = setInterval(() => flushQueue(), options.interval)
53
- timer.unref()
52
+ timer = setInterval(() => flushQueue(), options.interval);
53
+ timer.unref();
54
54
  }
55
55
 
56
56
  exporter.init = (runtime) => {
57
57
 
58
- }
58
+ };
59
59
 
60
60
  exporter.startedSpan = (span) => {
61
61
  if (options.sendStartSpan) {
62
- queue.push(span)
62
+ queue.push(span);
63
63
  if (!timer) {
64
- flushQueue()
64
+ flushQueue();
65
65
  }
66
66
  }
67
- }
67
+ };
68
68
 
69
69
  exporter.finishedSpan = (span) => {
70
70
  if (options.sendFinishedSpan) {
71
- queue.push(span)
71
+ queue.push(span);
72
72
  if (!timer) {
73
- flushQueue()
73
+ flushQueue();
74
74
  }
75
75
  }
76
- }
76
+ };
77
77
 
78
78
  exporter.stop = async () => {
79
79
  if (timer) {
80
- clearInterval(timer)
81
- timer = null
80
+ clearInterval(timer);
81
+ timer = null;
82
82
  }
83
- }
83
+ };
84
84
 
85
- return exporter
86
- }
85
+ return exporter;
86
+ };
@@ -1,39 +1,39 @@
1
- const { isFunction } = require('@weave-js/utils')
1
+ const { isFunction } = require('@weave-js/utils');
2
2
 
3
3
  const collectors = {
4
4
  // Console: require('./console'),
5
5
  Event: require('./event'),
6
6
  BaseCollector: require('./base')
7
- }
7
+ };
8
8
 
9
9
  const getByName = name => {
10
- const n = Object.keys(collectors).find(collectorName => collectorName.toLowerCase() === name.toLowerCase())
11
- return collectors[n]
12
- }
10
+ const n = Object.keys(collectors).find(collectorName => collectorName.toLowerCase() === name.toLowerCase());
11
+ return collectors[n];
12
+ };
13
13
 
14
14
  exports.resolveCollector = (runtime, collector) => {
15
- let CollectorClass
15
+ let CollectorClass;
16
16
  if (typeof collector === 'string') {
17
- CollectorClass = getByName(collector)
17
+ CollectorClass = getByName(collector);
18
18
  }
19
19
 
20
20
  if (isFunction(collector)) {
21
- return collector(runtime)
21
+ return collector(runtime);
22
22
  }
23
23
 
24
24
  if (typeof collector === 'object') {
25
- return collector
25
+ return collector;
26
26
  }
27
27
 
28
28
  if (!CollectorClass) {
29
- runtime.handleError(new Error('Tracer not found'))
29
+ runtime.handleError(new Error('Tracer not found'));
30
30
  }
31
31
 
32
- return new CollectorClass(collector)
33
- }
32
+ return new CollectorClass(collector);
33
+ };
34
34
 
35
- exports.Base = collectors.BaseCollector
35
+ exports.Base = collectors.BaseCollector;
36
36
 
37
- exports.Console = collectors.Console
37
+ exports.Console = collectors.Console;
38
38
 
39
- exports.Event = collectors.Event
39
+ exports.Event = collectors.Event;