@weave-js/core 0.10.0 → 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.
- package/.eslintrc.js +1 -1
- package/jest.config.js +1 -1
- package/lib/ExtendableError.js +33 -0
- package/lib/broker/context.js +58 -46
- package/lib/broker/{default-options.js → defaultOptions.js} +31 -13
- package/lib/broker/index.js +273 -251
- package/lib/buildRuntime.js +70 -0
- package/lib/cache/adapters/base.js +119 -0
- package/lib/cache/adapters/inMemory.js +154 -0
- package/lib/cache/adapters/inMemoryLru.js +140 -0
- package/lib/cache/adapters/index.js +10 -0
- package/lib/cache/getCacheKeyByObject.js +31 -0
- package/lib/cache/getPropertyFromDataOrMetadata.js +20 -0
- package/lib/cache/lock.js +34 -11
- package/lib/constants.js +11 -8
- package/lib/{error-handler.js → errorHandler.js} +8 -8
- package/lib/errors.js +46 -39
- package/lib/helper/{define-action.js → defineAction.js} +5 -3
- package/lib/helper/{define-broker-options.js → defineBrokerOptions.js} +4 -2
- package/lib/helper/{define-service.js → defineService.js} +6 -3
- package/lib/index.js +25 -22
- package/lib/logger/base.js +38 -29
- package/lib/logger/format/asHumanReadable.js +15 -14
- package/lib/logger/format/asJson.js +10 -10
- package/lib/logger/format/index.js +3 -3
- package/lib/logger/index.js +28 -25
- package/lib/logger/levels.js +23 -22
- package/lib/logger/tools.js +17 -13
- package/lib/logger/utils/colorize.js +23 -23
- package/lib/logger/utils/format.js +89 -65
- package/lib/metrics/common.js +47 -47
- package/lib/metrics/constants.js +44 -44
- package/lib/metrics/exporter/base.js +8 -8
- package/lib/metrics/exporter/event.js +20 -20
- package/lib/metrics/exporter/index.js +15 -15
- package/lib/metrics/index.js +2 -2
- package/lib/metrics/types/base.js +20 -20
- package/lib/metrics/types/counter.js +6 -6
- package/lib/metrics/types/gauge.js +24 -24
- package/lib/metrics/types/histogram.js +26 -26
- package/lib/metrics/types/index.js +6 -6
- package/lib/metrics/types/info.js +17 -17
- package/lib/middlewares/action-hooks/index.js +82 -34
- package/lib/middlewares/bulkhead/index.js +34 -33
- package/lib/middlewares/cache/index.js +106 -0
- package/lib/middlewares/circuit-breaker/index.js +85 -60
- package/lib/middlewares/context-tracker/index.js +39 -39
- package/lib/middlewares/error-handler/index.js +14 -14
- package/lib/middlewares/index.js +3 -2
- package/lib/middlewares/metrics/getMiddlewareWrapper.js +17 -17
- package/lib/middlewares/metrics/index.js +29 -29
- package/lib/middlewares/retry/index.js +15 -15
- package/lib/middlewares/timeout/index.js +18 -18
- package/lib/middlewares/tracing/index.js +50 -37
- package/lib/middlewares/tracing/tags.js +43 -0
- package/lib/middlewares/validator/index.js +32 -32
- package/lib/registry/{action-endpoint.js → actionEndpoint.js} +8 -8
- package/lib/registry/collections/{action-collection.js → actionCollection.js} +39 -35
- package/lib/registry/collections/{endpoint-collection.js → endpointCollection.js} +64 -65
- package/lib/registry/collections/{event-collection.js → eventCollection.js} +65 -69
- package/lib/registry/collections/{node-collection.js → nodeCollection.js} +45 -45
- package/lib/registry/collections/{service-collection.js → serviceCollection.js} +61 -55
- package/lib/registry/eventEndpoint.js +26 -0
- package/lib/registry/load-balancer/base.js +3 -3
- package/lib/registry/load-balancer/index.js +7 -7
- package/lib/registry/node.js +27 -27
- package/lib/registry/registry.js +147 -163
- package/lib/registry/service/parseAction.js +16 -16
- package/lib/registry/service/parseEvent.js +18 -18
- package/lib/registry/service/reduceMixins.js +10 -10
- package/lib/registry/service/service.js +72 -72
- package/lib/registry/{service-item.js → serviceItem.js} +21 -21
- package/lib/runtime/{init-action-invoker.js → initActionInvoker.js} +21 -21
- package/lib/runtime/initCache.js +19 -0
- package/lib/runtime/{init-context-factory.js → initContextFactory.js} +22 -22
- package/lib/runtime/{init-eventbus.js → initEventbus.js} +54 -53
- package/lib/runtime/{init-logger.js → initLogger.js} +11 -11
- package/lib/runtime/{init-metrics.js → initMetrics.js} +55 -54
- package/lib/runtime/{init-middleware-manager.js → initMiddlewareManager.js} +21 -21
- package/lib/runtime/{init-registry.js → initRegistry.js} +6 -6
- package/lib/runtime/initServiceManager.js +145 -0
- package/lib/runtime/{init-tracing.js → initTracing.js} +25 -24
- package/lib/runtime/{init-transport.js → initTransport.js} +5 -5
- package/lib/runtime/{init-uuid-factory.js → initUuidFactory.js} +4 -4
- package/lib/runtime/{init-validator.js → initValidator.js} +5 -5
- package/lib/tracing/collectors/base.js +29 -37
- package/lib/tracing/collectors/event.js +33 -33
- package/lib/tracing/collectors/index.js +16 -16
- package/lib/tracing/span.js +34 -32
- package/lib/tracing/time.js +8 -8
- package/lib/transport/InboundTransformStream.js +75 -0
- package/lib/transport/adapters/adapteBase.js +107 -0
- package/lib/transport/adapters/adapters.js +4 -4
- package/lib/transport/adapters/dummy/index.js +19 -19
- package/lib/transport/adapters/fromURI.js +13 -13
- package/lib/transport/adapters/getAdapterByName.js +5 -5
- package/lib/transport/adapters/index.js +12 -12
- package/lib/transport/adapters/tcp/discovery/codec.js +4 -4
- package/lib/transport/adapters/tcp/discovery/index.js +90 -76
- package/lib/transport/adapters/tcp/index.js +180 -175
- package/lib/transport/adapters/tcp/tcp-messagetypes.js +7 -7
- package/lib/transport/adapters/tcp/tcpReader.js +39 -38
- package/lib/transport/adapters/tcp/tcpWriteStream.js +26 -26
- package/lib/transport/adapters/tcp/tcpWriter.js +58 -58
- package/lib/transport/adapters/tcp/utils.js +12 -12
- package/lib/transport/createMessage.js +11 -0
- package/lib/transport/createTransport.js +377 -334
- package/lib/transport/errorPayloadFactory.js +15 -0
- package/lib/transport/messageHandlers.js +517 -0
- package/lib/transport/messageTypes.js +23 -0
- package/lib/types.js +95 -71
- package/lib/utils/index.js +2 -2
- package/lib/utils/options.js +47 -45
- package/lib/utils/{restore-error.js → restoreError.js} +4 -4
- package/package.json +6 -12
- package/CHANGELOG.md +0 -1334
- package/lib/build-runtime.js +0 -70
- package/lib/cache/base.js +0 -142
- package/lib/cache/index.js +0 -48
- package/lib/cache/memory.js +0 -121
- package/lib/middlewares/tracing/buildTags.js +0 -17
- package/lib/new-errors.js +0 -25
- package/lib/registry/event-endpoint.js +0 -26
- package/lib/runtime/init-cache.js +0 -10
- package/lib/runtime/init-service-manager.js +0 -128
- package/lib/tracing/collectors/console.js +0 -34
- package/lib/tracing/index.js +0 -3
- package/lib/tracing/tracer.js +0 -64
- package/lib/transport/adapters/adapter-base.js +0 -92
- package/lib/transport/message-handlers.js +0 -448
- package/lib/transport/message-types.js +0 -59
- package/lib/transport/message.js +0 -16
package/lib/types.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// eslint-disable-next-line no-unused-vars
|
|
2
|
-
const { EventEmitter2 } = require('eventemitter2')
|
|
2
|
+
const { EventEmitter2: EventEmitter } = require('eventemitter2');
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* @typedef {import('stream').Stream} Stream
|
|
@@ -22,7 +22,7 @@ const { EventEmitter2 } = require('eventemitter2')
|
|
|
22
22
|
/**
|
|
23
23
|
* @callback CallActionFunctionDef - Action function definition
|
|
24
24
|
* @param {string} actionName - Name of the action
|
|
25
|
-
* @param {object} data - Payload
|
|
25
|
+
* @param {object} [data] - Payload
|
|
26
26
|
* @param {ActionOptions} [options] - Action options
|
|
27
27
|
* @return {Promise<any>} Promise - Result
|
|
28
28
|
*/
|
|
@@ -58,8 +58,8 @@ const { EventEmitter2 } = require('eventemitter2')
|
|
|
58
58
|
/**
|
|
59
59
|
* ActionInvoker
|
|
60
60
|
* @typedef {object} ActionInvoker
|
|
61
|
-
* @property {function(string, object, ActionOptions):Promise<any>} call -
|
|
62
|
-
* @property {function(string, object, ActionOptions):Promise<any>}
|
|
61
|
+
* @property {function(string, object, ActionOptions):Promise<any>} call - Call a
|
|
62
|
+
* @property {function(string, object, ActionOptions):Promise<any>} multiCall - Service changed delegate
|
|
63
63
|
*/
|
|
64
64
|
|
|
65
65
|
/**
|
|
@@ -76,7 +76,7 @@ const { EventEmitter2 } = require('eventemitter2')
|
|
|
76
76
|
* @property {string} version - Weave version of the broker.
|
|
77
77
|
* @property {ActionInvoker} actionInvoker - Action invoker
|
|
78
78
|
* @property {EventBus} [eventBus] - Service event bus
|
|
79
|
-
* @property {
|
|
79
|
+
* @property {EventEmitter} bus - Instance event bus
|
|
80
80
|
* @property {Broker} [broker] - Broker reference.
|
|
81
81
|
* @property {BrokerOptions} options - options
|
|
82
82
|
* @property {RuntimeInstanceState} state - Instance state
|
|
@@ -111,11 +111,11 @@ const { EventEmitter2 } = require('eventemitter2')
|
|
|
111
111
|
* @property {function():Promise<any>} start - Start the broker.
|
|
112
112
|
* @property {function():Promise<any>} stop - Stop the broker
|
|
113
113
|
* @property {function(ServiceSchema):Service} createService - Create a new service with a service schema object.
|
|
114
|
-
* @property {function():void} loadService - Load a service from a given path.
|
|
115
|
-
* @property {function():void} loadServices - Load all services from a given directory.
|
|
114
|
+
* @property {function(string):void} loadService - Load a service from a given path.
|
|
115
|
+
* @property {function(string=, string=):void} loadServices - Load all services from a given directory.
|
|
116
116
|
* @property {ContextFactory} contextFactory - contextFactory
|
|
117
117
|
* @property {Logger} log - Logger instance
|
|
118
|
-
* @property {function():Logger} createLogger - Create a new logger instace.
|
|
118
|
+
* @property {function(string, any):Logger} createLogger - Create a new logger instace.
|
|
119
119
|
* @property {Cache} [cache] - Cache
|
|
120
120
|
* @property {function():string} getUUID - Create a new from the UUID factory.
|
|
121
121
|
* @property {Registry} registry - Service registry reference
|
|
@@ -127,12 +127,17 @@ const { EventEmitter2 } = require('eventemitter2')
|
|
|
127
127
|
* @property {function(string, any, any=):Promise<any>} emit - Emit
|
|
128
128
|
* @property {function(string, any, any=):Promise<any>} broadcast broadcast
|
|
129
129
|
* @property {function(string, any, any=):Promise<any>} broadcastLocal broadcastLocal
|
|
130
|
-
* @property {function(string):Promise<any>} waitForServices waitForServices
|
|
131
|
-
* @property {Promise<PingResult>} ping ping
|
|
132
|
-
* @property {function(Error)} handleError handleError
|
|
133
|
-
* @property {void} fatalError fatalError
|
|
130
|
+
* @property {function(Array<string>|string):Promise<any>} waitForServices waitForServices
|
|
131
|
+
* @property {function(string, number=):Promise<PingResult>} ping ping
|
|
132
|
+
* @property {function(Error):void} handleError handleError
|
|
133
|
+
* @property {function():void} fatalError fatalError
|
|
134
134
|
*/
|
|
135
135
|
|
|
136
|
+
/**
|
|
137
|
+
* Ping result
|
|
138
|
+
* @typedef {Object<string, number>} PingResult
|
|
139
|
+
*/
|
|
140
|
+
|
|
136
141
|
/**
|
|
137
142
|
* Configuration object for weave service broker.
|
|
138
143
|
* @typedef {Object} BulkheadOptions
|
|
@@ -151,12 +156,26 @@ const { EventEmitter2 } = require('eventemitter2')
|
|
|
151
156
|
* @property {Array<Number>} defaultBuckets Default buckets for histograms.
|
|
152
157
|
*/
|
|
153
158
|
|
|
159
|
+
/**
|
|
160
|
+
* Configuration object for weave service broker.
|
|
161
|
+
* @typedef {Object} TracingErrorOptions
|
|
162
|
+
* @property {Array<string>} fields - Fields of errors, that should be included in spans.
|
|
163
|
+
* @property {Boolean} stackTrace - Include stacktrace in spans
|
|
164
|
+
*/
|
|
165
|
+
|
|
154
166
|
/**
|
|
155
167
|
* Configuration object for weave service broker.
|
|
156
168
|
* @typedef {Object} TracingOptions
|
|
157
169
|
* @property {Boolean} enabled - Enable tracing middleware. (default = false)
|
|
158
170
|
* @property {Number} samplingRate - Rate of traced actions. (default = 1.0)
|
|
159
171
|
* @property {Array<String|Object>} collectors - Array of tracing collectors.
|
|
172
|
+
* @property {TracingErrorOptions} [errors] - Settings for tracing errors.
|
|
173
|
+
*/
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* Configuration object for weave service broker.
|
|
177
|
+
* @typedef {Object} CacheLockOptions
|
|
178
|
+
* @property {Boolean} [enabled=false] Enable cache lock. (default = false)
|
|
160
179
|
*/
|
|
161
180
|
|
|
162
181
|
/**
|
|
@@ -165,6 +184,7 @@ const { EventEmitter2 } = require('eventemitter2')
|
|
|
165
184
|
* @property {Boolean} enabled Enable cache middleware. (default = false)
|
|
166
185
|
* @property {String | Object} adapter - Cache adapter. (default = memory (In Memory))
|
|
167
186
|
* @property {number} [ttl=3000] - Cache item TTL.
|
|
187
|
+
* @property {CacheLockOptions} [lock] Cache lock options.
|
|
168
188
|
*/
|
|
169
189
|
|
|
170
190
|
/**
|
|
@@ -184,6 +204,12 @@ const { EventEmitter2 } = require('eventemitter2')
|
|
|
184
204
|
* @property {Number} retries Number of attempts before the action call gets rejected. (default = 5)
|
|
185
205
|
*/
|
|
186
206
|
|
|
207
|
+
/**
|
|
208
|
+
* Configuration object for weave service broker.
|
|
209
|
+
* @typedef {Object} TransportStreamOptions
|
|
210
|
+
* @property {Boolean} handleBackpressure Handle stream backpressure. (default = true)
|
|
211
|
+
*/
|
|
212
|
+
|
|
187
213
|
/**
|
|
188
214
|
* Configuration object for weave service broker.
|
|
189
215
|
* @typedef {Object} TransportOptions
|
|
@@ -195,6 +221,7 @@ const { EventEmitter2 } = require('eventemitter2')
|
|
|
195
221
|
* @property {Number} offlineNodeCheckInterval - Interval in milliseconds to check and remove not offline nodes. (default = 30000ms)
|
|
196
222
|
* @property {Number} maxOfflineTime - Maximum time a node can be offline before it is removed from the registry. (default = 600000ms)
|
|
197
223
|
* @property {Number} maxChunkSize - Maximum chunk size for streams. (default = 256 * 1024 Bits)
|
|
224
|
+
* @property {TransportStreamOptions} streams - Transport stream options.
|
|
198
225
|
*/
|
|
199
226
|
|
|
200
227
|
/**
|
|
@@ -241,7 +268,6 @@ const { EventEmitter2 } = require('eventemitter2')
|
|
|
241
268
|
* @property {RetryPolicyOptions} [retryPolicy] - Retry policy
|
|
242
269
|
* @property {ValidatorOptions} [validatorOptions] Validator options.
|
|
243
270
|
* @property {boolean} [validateActionParams] validateActionParams.
|
|
244
|
-
* @property {boolean} [watchServices] watchServices.
|
|
245
271
|
* @property {number} [waitForServiceInterval] waitForServiceInterval.
|
|
246
272
|
* @property {function():string} [beforeRegisterMiddlewares] beforeRegisterMiddlewares.
|
|
247
273
|
* @property {function(Runtime):string} [uuidFactory] uuidFactory.
|
|
@@ -264,26 +290,6 @@ const { EventEmitter2 } = require('eventemitter2')
|
|
|
264
290
|
* @typedef {Object.<string, *>}
|
|
265
291
|
*/
|
|
266
292
|
|
|
267
|
-
// Cache
|
|
268
|
-
|
|
269
|
-
/**
|
|
270
|
-
* Cache interface
|
|
271
|
-
* @typedef Cache
|
|
272
|
-
* @property {string} [name] name
|
|
273
|
-
* @property {LoggerOptions} options options
|
|
274
|
-
* @property {void} init init
|
|
275
|
-
* @property {Logger} log log
|
|
276
|
-
* @property {Promise<any>} set set
|
|
277
|
-
* @property {Promise<any>} get get
|
|
278
|
-
* @property {Promise<any>} remove remove
|
|
279
|
-
* @property {Promise<any>} clear clear
|
|
280
|
-
* @property {string} getCachingHash getCachingHash
|
|
281
|
-
* @property {Middleware} createMiddleware createMiddleware
|
|
282
|
-
* @property {Promise<any>} stop stop
|
|
283
|
-
*/
|
|
284
|
-
|
|
285
|
-
// Context
|
|
286
|
-
|
|
287
293
|
/**
|
|
288
294
|
* @export
|
|
289
295
|
* @typedef ContextFactory
|
|
@@ -328,12 +334,12 @@ const { EventEmitter2 } = require('eventemitter2')
|
|
|
328
334
|
* @property {number} stopTime stopTime
|
|
329
335
|
* @property {any} [metrics] metrics
|
|
330
336
|
* @property {function(any):void} setData - Set data object.
|
|
331
|
-
* @property {
|
|
332
|
-
* @property {
|
|
337
|
+
* @property {CallActionFunctionDef} call - Call a service action
|
|
338
|
+
* @property {function(string, object):Promise<any>} emit emit
|
|
333
339
|
* @property {Stream} [stream] - Stream
|
|
334
|
-
* @property {
|
|
335
|
-
* @property {
|
|
336
|
-
* @property {
|
|
340
|
+
* @property {function(string, any):Promise<any>} broadcast Broadcast an event to all listener.
|
|
341
|
+
* @property {function():void} startSpan startSpan
|
|
342
|
+
* @property {function():void} finishSpan finishSpan
|
|
337
343
|
* @property {function():Context} copy - Copy the current context.
|
|
338
344
|
* @property {function(Stream):void} setStream - Set the context data stream.
|
|
339
345
|
* @property {function(Endpoint):void} setEndpoint - Set data object.
|
|
@@ -350,9 +356,9 @@ const { EventEmitter2 } = require('eventemitter2')
|
|
|
350
356
|
* @property {Promise<any>} get get
|
|
351
357
|
* @property {Promise<any>} remove remove
|
|
352
358
|
* @property {Promise<any>} clear clear
|
|
353
|
-
* @property {string}
|
|
354
|
-
* @property {Middleware} createMiddleware createMiddleware
|
|
355
|
-
* @property {Promise<any>} stop stop
|
|
359
|
+
* @property {string} getCachingKey getCachingKey
|
|
360
|
+
* @property {function():Middleware} createMiddleware createMiddleware
|
|
361
|
+
* @property {function():Promise<any>} stop stop
|
|
356
362
|
*/
|
|
357
363
|
|
|
358
364
|
// Transport
|
|
@@ -368,9 +374,9 @@ const { EventEmitter2 } = require('eventemitter2')
|
|
|
368
374
|
* @property {PendingStore} pending pending
|
|
369
375
|
* @property {Function} resolveConnect resolveConnect
|
|
370
376
|
* @property {string} adapterName adapterName
|
|
371
|
-
* @property {Promise<any>} connect connect
|
|
372
|
-
* @property {Promise<any>} disconnect disconnect
|
|
373
|
-
* @property {
|
|
377
|
+
* @property {function():Promise<any>} connect connect
|
|
378
|
+
* @property {function():Promise<any>} disconnect disconnect
|
|
379
|
+
* @property {function():Promise<any>} setReady setReady
|
|
374
380
|
* @property {function(TransportMessage):Promise<any>} send send
|
|
375
381
|
* @property {any} sendNodeInfo sendNodeInfo
|
|
376
382
|
* @property {function():Promise<any>} sendPing sendPing
|
|
@@ -475,14 +481,14 @@ const { EventEmitter2 } = require('eventemitter2')
|
|
|
475
481
|
* @property {Endpoint | WeaveError} getNextAvailableActionEndpoint getNextAvailableActionEndpoint
|
|
476
482
|
* @property {function(ServiceActionCollectionListFilterParams=):Array<any>} getActionList getActionList
|
|
477
483
|
* @property {function(string): void} deregisterServiceByNodeId deregisterServiceByNodeId
|
|
478
|
-
* @property {function(string, number,
|
|
484
|
+
* @property {function(string, number, string):boolean} hasService hasService
|
|
479
485
|
* @property {function(string, string):Endpoint} getActionEndpointByNodeId getActionEndpointByNodeId
|
|
480
486
|
* @property {function(string):EndpointCollection} getActionEndpoints getActionEndpoints
|
|
481
487
|
* @property {function(ServiceAction):Endpoint} createPrivateActionEndpoint createPrivateActionEndpoint
|
|
482
488
|
* @property {function(string):Endpoint} getLocalActionEndpoint getLocalActionEndpoint
|
|
483
|
-
* @property {NodeInfo} getNodeInfo getNodeInfo
|
|
484
|
-
* @property {NodeInfo} getLocalNodeInfo getLocalNodeInfo
|
|
485
|
-
* @property {NodeInfo} generateLocalNodeInfo generateLocalNodeInfo
|
|
489
|
+
* @property {function():NodeInfo} getNodeInfo getNodeInfo
|
|
490
|
+
* @property {function():NodeInfo} getLocalNodeInfo getLocalNodeInfo
|
|
491
|
+
* @property {function(Boolean=):NodeInfo} generateLocalNodeInfo generateLocalNodeInfo
|
|
486
492
|
* @property {*} processNodeInfo processNodeInfo
|
|
487
493
|
* @property {function(string, boolean):void} nodeDisconnected nodeDisconnected
|
|
488
494
|
* @property {function(string):void} removeNode removeNode
|
|
@@ -507,6 +513,7 @@ const { EventEmitter2 } = require('eventemitter2')
|
|
|
507
513
|
* @property {function():number} count count
|
|
508
514
|
* @property {function(string):Endpoint} getByNodeId getByNodeId
|
|
509
515
|
* @property {function(string):void} removeByNodeId removeByNodeId
|
|
516
|
+
* @property {function(string):Endpoint} endpointByNodeId Get endpoint by node ID.
|
|
510
517
|
* @property {function():void} removeByService removeByService
|
|
511
518
|
*/
|
|
512
519
|
|
|
@@ -522,6 +529,7 @@ const { EventEmitter2 } = require('eventemitter2')
|
|
|
522
529
|
* @property {number} lastHeartbeatTime lastHeartbeatTime
|
|
523
530
|
* @property {number} offlineTime offlineTime
|
|
524
531
|
* @property {boolean} isAvailable isAvailable
|
|
532
|
+
* @property {boolean} wasDisconnectedUnexpectedly Node was disconnected unexpectedly
|
|
525
533
|
* @property {Array<ServiceItem>} services services
|
|
526
534
|
* @property {number} sequence sequence
|
|
527
535
|
* @property {Array<string>} [events] events
|
|
@@ -534,7 +542,6 @@ const { EventEmitter2 } = require('eventemitter2')
|
|
|
534
542
|
|
|
535
543
|
/**
|
|
536
544
|
* Endpoint
|
|
537
|
-
*
|
|
538
545
|
* @typedef Endpoint
|
|
539
546
|
* @property {Node} node node
|
|
540
547
|
* @property {Service} service service
|
|
@@ -549,7 +556,7 @@ const { EventEmitter2 } = require('eventemitter2')
|
|
|
549
556
|
/**
|
|
550
557
|
* Event colleciton
|
|
551
558
|
* @typedef EventCollection
|
|
552
|
-
* @property {function(Node, Service,
|
|
559
|
+
* @property {function(Node, Service, EventCollection):Endpoint} add add
|
|
553
560
|
* @property {Endpoint} get get
|
|
554
561
|
* @property {function(string, Node):void} remove remove
|
|
555
562
|
* @property {function(Service):void} removeByService removeByService
|
|
@@ -562,7 +569,8 @@ const { EventEmitter2 } = require('eventemitter2')
|
|
|
562
569
|
|
|
563
570
|
/**
|
|
564
571
|
* @typedef {object} NodeCollectionListFilterOptions
|
|
565
|
-
* @property {boolean} [
|
|
572
|
+
* @property {boolean} [availableOnly=false] Git only available nodes.
|
|
573
|
+
* @property {boolean} [withServices=false] Output all services on an node.
|
|
566
574
|
*/
|
|
567
575
|
|
|
568
576
|
/**
|
|
@@ -576,16 +584,16 @@ const { EventEmitter2 } = require('eventemitter2')
|
|
|
576
584
|
* @property {boolean} has has
|
|
577
585
|
* @property {function(string):Node} get get
|
|
578
586
|
* @property {function(string):boolean} remove remove
|
|
579
|
-
* @property {function(NodeCollectionListFilterOptions):Array<Node>} list list
|
|
587
|
+
* @property {function(NodeCollectionListFilterOptions=):Array<Node>} list list
|
|
580
588
|
* @property {void} disconnected disconnected
|
|
581
589
|
* @property {Array<Node>} toArray toArray
|
|
582
590
|
*/
|
|
583
591
|
|
|
584
592
|
/**
|
|
585
593
|
* @typedef {Object} ServiceActionCollectionListFilterParams
|
|
586
|
-
* @property {boolean} [onlyLocals] Shows only local service actions
|
|
587
|
-
* @property {boolean} [skipInternals] Shows only local service actions
|
|
588
|
-
* @property {boolean} [withEndpoints] Shows only local service actions
|
|
594
|
+
* @property {boolean} [onlyLocals=false] Shows only local service actions
|
|
595
|
+
* @property {boolean} [skipInternals=false] Shows only local service actions
|
|
596
|
+
* @property {boolean} [withEndpoints=false] Shows only local service actions
|
|
589
597
|
*/
|
|
590
598
|
|
|
591
599
|
/**
|
|
@@ -593,8 +601,8 @@ const { EventEmitter2 } = require('eventemitter2')
|
|
|
593
601
|
* @typedef ServiceActionCollection
|
|
594
602
|
* @property {*} add add
|
|
595
603
|
* @property {function(string):EndpointCollection} get get
|
|
596
|
-
* @property {function(
|
|
597
|
-
* @property {function(string, Node)} remove remove
|
|
604
|
+
* @property {function(Service):void} removeByService removeByService
|
|
605
|
+
* @property {function(string, Node):void} remove remove
|
|
598
606
|
* @property {function(ServiceActionCollectionListFilterParams):Array<any>} list list
|
|
599
607
|
*/
|
|
600
608
|
|
|
@@ -618,11 +626,12 @@ const { EventEmitter2 } = require('eventemitter2')
|
|
|
618
626
|
/**
|
|
619
627
|
* @typedef {Object} ServiceCollectionListFilterParams
|
|
620
628
|
* @property {boolean} [localOnly=false] Show only local services.
|
|
629
|
+
* @property {boolean} [availableOnly=false] Show only available services.
|
|
621
630
|
* @property {boolean} [withActions=false] Include actions in result.
|
|
622
631
|
* @property {boolean} [withEvents=false] Include events in result.
|
|
623
632
|
* @property {boolean} [withNodeService=false] Include node service.
|
|
624
633
|
* @property {boolean} [withSettings=false] Include service settings.
|
|
625
|
-
|
|
634
|
+
*/
|
|
626
635
|
|
|
627
636
|
/**
|
|
628
637
|
* Service collection
|
|
@@ -631,8 +640,8 @@ const { EventEmitter2 } = require('eventemitter2')
|
|
|
631
640
|
* @property {function(Node,string, number, any):ServiceItem} add Add a new service to service collection.
|
|
632
641
|
* @property {*} get get
|
|
633
642
|
* @property {function(string, number, string):boolean} has has
|
|
634
|
-
* @property {function(string, string, number):void} remove
|
|
635
|
-
* @property {function(string):void} removeAllByNodeId
|
|
643
|
+
* @property {function(string, string, number=):void} remove Remove endpoint by node ID, service name and version*.
|
|
644
|
+
* @property {function(string):void} removeAllByNodeId Remove all endpoints by node ID.
|
|
636
645
|
* @property {*} registerAction registerAction
|
|
637
646
|
* @property {function(string):EndpointCollection} tryFindActionsByActionName tryFindActionsByActionName
|
|
638
647
|
* @property {function():Array<any>} getActionsList getActionsList
|
|
@@ -653,7 +662,7 @@ const { EventEmitter2 } = require('eventemitter2')
|
|
|
653
662
|
* @property {function(Action):void} addAction addAction
|
|
654
663
|
* @property {function(Event):void} addEvent addEvent
|
|
655
664
|
* @property {function(string, number, string=): boolean} equals equals
|
|
656
|
-
* @property {function(any)} update update
|
|
665
|
+
* @property {function(any):void} update update
|
|
657
666
|
*/
|
|
658
667
|
|
|
659
668
|
/**
|
|
@@ -725,6 +734,7 @@ const { EventEmitter2 } = require('eventemitter2')
|
|
|
725
734
|
* @property {void} timer timer
|
|
726
735
|
* @property {Metric} getMetric getMetric
|
|
727
736
|
* @property {any} list list
|
|
737
|
+
* @property {function():Promise<any>} stop list
|
|
728
738
|
*/
|
|
729
739
|
|
|
730
740
|
// Midlewares
|
|
@@ -734,7 +744,7 @@ const { EventEmitter2 } = require('eventemitter2')
|
|
|
734
744
|
* @export
|
|
735
745
|
* @typedef MiddlewareHandler
|
|
736
746
|
* @property {void} init init
|
|
737
|
-
* @property {
|
|
747
|
+
* @property {function(Middleware)} add add
|
|
738
748
|
* @property {any} wrapMethod wrapMethod
|
|
739
749
|
* @property {any} wrapHandler wrapHandler
|
|
740
750
|
* @property {any} callHandlersAsync callHandlersAsync
|
|
@@ -746,13 +756,27 @@ const { EventEmitter2 } = require('eventemitter2')
|
|
|
746
756
|
* @typedef Middleware
|
|
747
757
|
* @property {() => any} [created] created
|
|
748
758
|
* @property {function(Broker):void} [started] started
|
|
749
|
-
* @property {function(
|
|
750
|
-
* @property {(
|
|
751
|
-
* @property {function(
|
|
752
|
-
* @property {(
|
|
753
|
-
* @property {(
|
|
754
|
-
* @property {(
|
|
755
|
-
* @property {()
|
|
759
|
+
* @property {function(Broker):void} [stopping] stopped
|
|
760
|
+
* @property {function(Broker):void} [createService] stopped
|
|
761
|
+
* @property {function(Broker):void} [loadService] stopped
|
|
762
|
+
* @property {function(Broker):void} [loadServices] stopped
|
|
763
|
+
* @property {function(Broker):void} [stopping] stopped
|
|
764
|
+
* @property {function(Broker):void} [ping] stopped
|
|
765
|
+
* @property {function(Broker):void} [call] stopped
|
|
766
|
+
* @property {function(Broker):void} [multiCall] stopped
|
|
767
|
+
* @property {function(Broker):void} [emit] stopped
|
|
768
|
+
* @property {function(Broker):void} [broadcast] stopped
|
|
769
|
+
* @property {function(Broker):void} [broadcastLocal] stopped
|
|
770
|
+
* @property {function(Broker):void} [serviceCreating] stopped
|
|
771
|
+
* @property {function(Broker):void} [serviceCreated] stopped
|
|
772
|
+
* @property {function(Broker):void} [serviceStopping] stopped
|
|
773
|
+
* @property {function(Broker):void} [serviceStopped] stopped
|
|
774
|
+
* @property {function(Broker):void} [localAction] stopped
|
|
775
|
+
* @property {function(Broker):void} [localEvent] stopped
|
|
776
|
+
* @property {function(Broker):void} [remoteAction] stopped
|
|
777
|
+
* @property {function(Broker):void} [remoteEvent] stopped
|
|
778
|
+
* @property {function(Broker):void} [transportSend] stopped
|
|
779
|
+
* @property {function(Broker):void} [transportMessageHandler] stopped
|
|
756
780
|
*/
|
|
757
781
|
|
|
758
782
|
// Validator
|
|
@@ -768,7 +792,7 @@ const { EventEmitter2 } = require('eventemitter2')
|
|
|
768
792
|
* Tracer instance
|
|
769
793
|
* @typedef Tracer
|
|
770
794
|
* @property {void} init init
|
|
771
|
-
* @property {Promise<any>} stop stop
|
|
795
|
+
* @property {function():Promise<any>} stop stop
|
|
772
796
|
* @property {boolean} shouldSample shouldSample
|
|
773
797
|
* @property {function():void} invokeCollectorMethod invokeCollectorMethod
|
|
774
798
|
* @property {function(string, object):Span} startSpan startSpan
|
|
@@ -823,4 +847,4 @@ const { EventEmitter2 } = require('eventemitter2')
|
|
|
823
847
|
* @param {object} data - Payload
|
|
824
848
|
*/
|
|
825
849
|
|
|
826
|
-
module.exports = {}
|
|
850
|
+
module.exports = {};
|
package/lib/utils/index.js
CHANGED
package/lib/utils/options.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
|
|
2
1
|
const {
|
|
3
2
|
clone,
|
|
4
3
|
compact,
|
|
@@ -7,108 +6,111 @@ const {
|
|
|
7
6
|
flatten,
|
|
8
7
|
wrapHandler,
|
|
9
8
|
wrapInArray
|
|
10
|
-
} = require('@weave-js/utils')
|
|
9
|
+
} = require('@weave-js/utils');
|
|
11
10
|
|
|
12
11
|
function mergeSettings (source, targetSchema) {
|
|
13
|
-
return defaultsDeep(source, targetSchema)
|
|
12
|
+
return defaultsDeep(source, targetSchema);
|
|
14
13
|
}
|
|
15
14
|
|
|
16
15
|
function mergeMeta (source, targetSchema) {
|
|
17
|
-
return defaultsDeep(source, targetSchema)
|
|
16
|
+
return defaultsDeep(source, targetSchema);
|
|
18
17
|
}
|
|
19
18
|
|
|
20
19
|
function mergeUniqueArrays (source, targetSchema) {
|
|
21
|
-
return compact(flatten([targetSchema, source]))
|
|
20
|
+
return compact(flatten([targetSchema, source]));
|
|
22
21
|
}
|
|
23
22
|
|
|
24
23
|
function mergeActions (source, targetSchema) {
|
|
25
24
|
Object.keys(source).map(key => {
|
|
26
25
|
// prevent action merge
|
|
27
26
|
if (source[key] === false && targetSchema[key]) {
|
|
28
|
-
delete targetSchema[key]
|
|
29
|
-
return
|
|
27
|
+
delete targetSchema[key];
|
|
28
|
+
return;
|
|
30
29
|
}
|
|
31
30
|
|
|
32
|
-
const sourceAction = wrapHandler(source[key])
|
|
33
|
-
const targetSchemaAction = wrapHandler(targetSchema[key])
|
|
31
|
+
const sourceAction = wrapHandler(source[key]);
|
|
32
|
+
const targetSchemaAction = wrapHandler(targetSchema[key]);
|
|
34
33
|
|
|
35
|
-
targetSchema[key] = deepMerge(sourceAction, targetSchemaAction)
|
|
36
|
-
})
|
|
34
|
+
targetSchema[key] = deepMerge(sourceAction, targetSchemaAction);
|
|
35
|
+
});
|
|
37
36
|
|
|
38
|
-
return targetSchema
|
|
37
|
+
return targetSchema;
|
|
39
38
|
}
|
|
40
39
|
|
|
40
|
+
// Merge events
|
|
41
41
|
function mergeEvents (source, targetSchema) {
|
|
42
42
|
Object.keys(source).map(key => {
|
|
43
|
-
const sourceEvent = wrapHandler(source[key])
|
|
44
|
-
const targetEvent = wrapHandler(targetSchema[key])
|
|
43
|
+
const sourceEvent = wrapHandler(source[key]);
|
|
44
|
+
const targetEvent = wrapHandler(targetSchema[key]);
|
|
45
45
|
|
|
46
|
-
let handler = compact(flatten([sourceEvent ? sourceEvent.handler : null, targetEvent ? targetEvent.handler : null]))
|
|
46
|
+
let handler = compact(flatten([sourceEvent ? sourceEvent.handler : null, targetEvent ? targetEvent.handler : null]));
|
|
47
47
|
if (handler.length === 1) {
|
|
48
|
-
handler = handler[0]
|
|
48
|
+
handler = handler[0];
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
targetSchema[key] = deepMerge(sourceEvent, targetEvent)
|
|
52
|
-
targetSchema[key].handler = handler
|
|
53
|
-
})
|
|
54
|
-
return targetSchema
|
|
51
|
+
targetSchema[key] = deepMerge(sourceEvent, targetEvent);
|
|
52
|
+
targetSchema[key].handler = handler;
|
|
53
|
+
});
|
|
54
|
+
return targetSchema;
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
function mergeMethods (source, targetSchema) {
|
|
58
|
-
return Object.assign(source, targetSchema)
|
|
58
|
+
return Object.assign(source, targetSchema);
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
function mergeActionHooks (source, target) {
|
|
62
62
|
Object.keys(source).map(hookName => {
|
|
63
63
|
if (!target[hookName]) {
|
|
64
|
-
target[hookName] = {}
|
|
64
|
+
target[hookName] = {};
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
Object.keys(source[hookName]).map(actionName => {
|
|
68
|
-
const sourceHookAction = wrapInArray(source[hookName][actionName])
|
|
69
|
-
const targetHookAction = wrapInArray(target[hookName][actionName])
|
|
70
|
-
target[hookName][actionName] = compact(flatten([sourceHookAction, targetHookAction]))
|
|
71
|
-
})
|
|
72
|
-
})
|
|
68
|
+
const sourceHookAction = wrapInArray(source[hookName][actionName]);
|
|
69
|
+
const targetHookAction = wrapInArray(target[hookName][actionName]);
|
|
70
|
+
target[hookName][actionName] = compact(flatten([sourceHookAction, targetHookAction]));
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
73
|
|
|
74
|
-
return target
|
|
74
|
+
return target;
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
function mergeLifecicleHooks (source, targetSchema) {
|
|
78
|
-
return compact(flatten([targetSchema, source]))
|
|
78
|
+
return compact(flatten([targetSchema, source]));
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
-
|
|
82
|
-
const mixinSchema = clone(mixin)
|
|
83
|
-
const resultSchema = clone(targetSchema)
|
|
81
|
+
function mergeSchemas (mixin, targetSchema) {
|
|
82
|
+
const mixinSchema = clone(mixin);
|
|
83
|
+
const resultSchema = clone(targetSchema);
|
|
84
84
|
|
|
85
85
|
Object.keys(resultSchema).forEach(key => {
|
|
86
86
|
if (['name', 'version'].includes(key)) {
|
|
87
87
|
// override value
|
|
88
|
-
mixinSchema[key] = resultSchema[key]
|
|
88
|
+
mixinSchema[key] = resultSchema[key];
|
|
89
89
|
} else if (key === 'dependencies') {
|
|
90
|
-
mixinSchema[key] = mergeUniqueArrays(resultSchema[key], mixinSchema[key])
|
|
90
|
+
mixinSchema[key] = mergeUniqueArrays(resultSchema[key], mixinSchema[key]);
|
|
91
91
|
} else if (key === 'mixins') {
|
|
92
|
-
mixinSchema[key] = mergeUniqueArrays(resultSchema[key], mixinSchema[key] || {})
|
|
92
|
+
mixinSchema[key] = mergeUniqueArrays(resultSchema[key], mixinSchema[key] || {});
|
|
93
93
|
} else if (key === 'settings') {
|
|
94
|
-
mixinSchema[key] = mergeSettings(resultSchema[key], mixinSchema[key])
|
|
94
|
+
mixinSchema[key] = mergeSettings(resultSchema[key], mixinSchema[key]);
|
|
95
95
|
} else if (key === 'meta') {
|
|
96
|
-
mixinSchema[key] = mergeMeta(resultSchema[key], mixinSchema[key])
|
|
96
|
+
mixinSchema[key] = mergeMeta(resultSchema[key], mixinSchema[key]);
|
|
97
97
|
} else if (key === 'actions') {
|
|
98
|
-
mixinSchema[key] = mergeActions(resultSchema[key], mixinSchema[key] || {})
|
|
98
|
+
mixinSchema[key] = mergeActions(resultSchema[key], mixinSchema[key] || {});
|
|
99
99
|
} else if (key === 'hooks') {
|
|
100
|
-
mixinSchema[key] = mergeActionHooks(resultSchema[key], mixinSchema[key] || {})
|
|
100
|
+
mixinSchema[key] = mergeActionHooks(resultSchema[key], mixinSchema[key] || {});
|
|
101
101
|
} else if (key === 'events') {
|
|
102
|
-
mixinSchema[key] = mergeEvents(resultSchema[key], mixinSchema[key] || {})
|
|
102
|
+
mixinSchema[key] = mergeEvents(resultSchema[key], mixinSchema[key] || {});
|
|
103
103
|
} else if (key === 'methods') {
|
|
104
|
-
mixinSchema[key] = mergeMethods(resultSchema[key], mixinSchema[key] || {})
|
|
104
|
+
mixinSchema[key] = mergeMethods(resultSchema[key], mixinSchema[key] || {});
|
|
105
105
|
} else if (['afterSchemasMerged', 'created', 'started', 'stopped'].includes(key)) {
|
|
106
|
-
mixinSchema[key] = mergeLifecicleHooks(resultSchema[key], mixinSchema[key])
|
|
106
|
+
mixinSchema[key] = mergeLifecicleHooks(resultSchema[key], mixinSchema[key]);
|
|
107
107
|
} else {
|
|
108
108
|
// default action for properties
|
|
109
|
-
mixinSchema[key] = resultSchema[key]
|
|
109
|
+
mixinSchema[key] = resultSchema[key];
|
|
110
110
|
}
|
|
111
|
-
})
|
|
111
|
+
});
|
|
112
112
|
|
|
113
|
-
return mixinSchema
|
|
113
|
+
return mixinSchema;
|
|
114
114
|
}
|
|
115
|
+
|
|
116
|
+
module.exports = { mergeSchemas };
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
const errors = require('../
|
|
1
|
+
const errors = require('../errors');
|
|
2
2
|
|
|
3
3
|
exports.restoreError = (error) => {
|
|
4
|
-
const ErrorClass = errors[error.name]
|
|
4
|
+
const ErrorClass = errors[error.name];
|
|
5
5
|
|
|
6
6
|
if (ErrorClass) {
|
|
7
7
|
switch (error.name) {
|
|
8
8
|
case 'WeaveError':
|
|
9
|
-
return new ErrorClass(error.message, error.code, error.type, error.data)
|
|
9
|
+
return new ErrorClass(error.message, error.code, error.type, error.data);
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
|
-
}
|
|
12
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@weave-js/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0",
|
|
4
4
|
"description": "The core package of weave",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Weave",
|
|
@@ -40,20 +40,14 @@
|
|
|
40
40
|
"license": "MIT",
|
|
41
41
|
"dependencies": {
|
|
42
42
|
"@weave-js/errors": "^0.9.1",
|
|
43
|
-
"@weave-js/utils": "^0.
|
|
44
|
-
"@weave-js/validator": "^0.
|
|
45
|
-
"eventemitter2": "^6.4.
|
|
46
|
-
"glob": "^7.
|
|
47
|
-
"node-fetch": "^2.6.1"
|
|
48
|
-
},
|
|
49
|
-
"devDependencies": {
|
|
50
|
-
"eslint": "^7.30.0",
|
|
51
|
-
"jest": "^27.0.6",
|
|
52
|
-
"jest-cli": "^27.0.6"
|
|
43
|
+
"@weave-js/utils": "^0.11.0",
|
|
44
|
+
"@weave-js/validator": "^0.12.0",
|
|
45
|
+
"eventemitter2": "^6.4.5",
|
|
46
|
+
"glob": "^7.2.0"
|
|
53
47
|
},
|
|
54
48
|
"directories": {
|
|
55
49
|
"lib": "lib",
|
|
56
50
|
"test": "test"
|
|
57
51
|
},
|
|
58
|
-
"gitHead": "
|
|
52
|
+
"gitHead": "406e96b1f3017cc1d22de6693f61a2265506c239"
|
|
59
53
|
}
|