allserver 2.0.0 → 2.1.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/README.md +23 -2
- package/package.json +1 -1
- package/src/client/MemoryClientTransport.js +29 -0
- package/src/index.js +6 -0
- package/src/server/Allserver.js +2 -2
- package/src/server/MemoryTransport.js +28 -0
package/README.md
CHANGED
|
@@ -343,8 +343,6 @@ More info can be found in the [`micro`](http://npmjs.com/package/micro) NPM modu
|
|
|
343
343
|
|
|
344
344
|
Doesn't require a dedicated client transport. Use the HTTP client below.
|
|
345
345
|
|
|
346
|
-
NB: not yet tested in production.
|
|
347
|
-
|
|
348
346
|
```js
|
|
349
347
|
const { Allserver, ExpressTransport } = require("allserver");
|
|
350
348
|
|
|
@@ -590,6 +588,29 @@ const data = await job.waitUntilFinished(queueEvents, 30_000);
|
|
|
590
588
|
const { success, code, message, user } = data;
|
|
591
589
|
```
|
|
592
590
|
|
|
591
|
+
### In memory
|
|
592
|
+
|
|
593
|
+
Sometimes you need to unit test your procedures via the `AllserverClient`. For that we have `MemoryTransport`.
|
|
594
|
+
|
|
595
|
+
```js
|
|
596
|
+
const { Allserver, MemoryTransport } = require("allserver");
|
|
597
|
+
|
|
598
|
+
const memoryServer = Allserver({
|
|
599
|
+
procedures,
|
|
600
|
+
transport: MemoryTransport(),
|
|
601
|
+
});
|
|
602
|
+
|
|
603
|
+
const client = memoryServer.start();
|
|
604
|
+
|
|
605
|
+
const { success, code, message, user } = await client.updateUser({
|
|
606
|
+
id: "123412341234123412341234",
|
|
607
|
+
firstName: "Fred",
|
|
608
|
+
lastName: "Flinstone",
|
|
609
|
+
});
|
|
610
|
+
|
|
611
|
+
assert(success === true);
|
|
612
|
+
```
|
|
613
|
+
|
|
593
614
|
## `AllserverClient` options
|
|
594
615
|
|
|
595
616
|
**All the arguments are optional.** But either `uri` or `transport` must be provided. We are trying to keep the highest possible DX here.
|
package/package.json
CHANGED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
module.exports = require("./ClientTransport").compose({
|
|
2
|
+
name: "MemoryClientTransport",
|
|
3
|
+
|
|
4
|
+
props: {
|
|
5
|
+
_allserverContext: null,
|
|
6
|
+
uri: "memory",
|
|
7
|
+
},
|
|
8
|
+
|
|
9
|
+
init({ allserverContext }) {
|
|
10
|
+
this._allserverContext = allserverContext || this._allserverContext;
|
|
11
|
+
},
|
|
12
|
+
|
|
13
|
+
methods: {
|
|
14
|
+
async introspect(ctx) {
|
|
15
|
+
ctx.procedureName = "";
|
|
16
|
+
const result = await this.call(ctx);
|
|
17
|
+
if (!result) throw Error(); // The ClientTransport expects us to throw if call fails
|
|
18
|
+
return result;
|
|
19
|
+
},
|
|
20
|
+
|
|
21
|
+
async call(ctx) {
|
|
22
|
+
return this._allserverContext.allserver.handleCall(ctx);
|
|
23
|
+
},
|
|
24
|
+
|
|
25
|
+
createCallContext(defaultCtx) {
|
|
26
|
+
return { ...defaultCtx, ...this._allserverContext, memory: {} };
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
});
|
package/src/index.js
CHANGED
|
@@ -23,6 +23,9 @@ module.exports = {
|
|
|
23
23
|
get BullmqTransport() {
|
|
24
24
|
return require("./server/BullmqTransport");
|
|
25
25
|
},
|
|
26
|
+
get MemoryTransport() {
|
|
27
|
+
return require("./server/MemoryTransport");
|
|
28
|
+
},
|
|
26
29
|
|
|
27
30
|
// client
|
|
28
31
|
|
|
@@ -41,4 +44,7 @@ module.exports = {
|
|
|
41
44
|
get BullmqClientTransport() {
|
|
42
45
|
return require("./client/BullmqClientTransport");
|
|
43
46
|
},
|
|
47
|
+
get MemoryClientTransport() {
|
|
48
|
+
return require("./client/MemoryClientTransport");
|
|
49
|
+
},
|
|
44
50
|
};
|
package/src/server/Allserver.js
CHANGED
|
@@ -66,7 +66,7 @@ module.exports = require("stampit")({
|
|
|
66
66
|
result = await ctx.procedure(ctx.arg, ctx);
|
|
67
67
|
} catch (err) {
|
|
68
68
|
const code = err.code || "ALLSERVER_PROCEDURE_ERROR";
|
|
69
|
-
this.logger.error(
|
|
69
|
+
this.logger.error(err, code);
|
|
70
70
|
ctx.error = err;
|
|
71
71
|
ctx.result = {
|
|
72
72
|
success: false,
|
|
@@ -104,7 +104,7 @@ module.exports = require("stampit")({
|
|
|
104
104
|
}
|
|
105
105
|
} catch (err) {
|
|
106
106
|
const code = err.code || "ALLSERVER_MIDDLEWARE_ERROR";
|
|
107
|
-
this.logger.error(
|
|
107
|
+
this.logger.error(err, code);
|
|
108
108
|
ctx.error = err;
|
|
109
109
|
ctx.result = {
|
|
110
110
|
success: false,
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
module.exports = require("./Transport").compose({
|
|
2
|
+
name: "MemoryTransport",
|
|
3
|
+
|
|
4
|
+
props: {
|
|
5
|
+
AllserverClient: require("../client/AllserverClient"),
|
|
6
|
+
MemoryClientTransport: require("../client/MemoryClientTransport"),
|
|
7
|
+
},
|
|
8
|
+
|
|
9
|
+
methods: {
|
|
10
|
+
startServer(defaultCtx) {
|
|
11
|
+
return this.AllserverClient({
|
|
12
|
+
transport: this.MemoryClientTransport({ allserverContext: { ...defaultCtx, memory: {} } }),
|
|
13
|
+
});
|
|
14
|
+
},
|
|
15
|
+
|
|
16
|
+
reply(ctx) {
|
|
17
|
+
return ctx.result;
|
|
18
|
+
},
|
|
19
|
+
|
|
20
|
+
getProcedureName(ctx) {
|
|
21
|
+
return ctx.procedureName;
|
|
22
|
+
},
|
|
23
|
+
|
|
24
|
+
isIntrospection(ctx) {
|
|
25
|
+
return this.getProcedureName(ctx) === "";
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
});
|