Create Server (@hint/utils-create-server)
Create a server to run tests
Installation
To install the package, you need to run:
npm install @hint/utils-create-server
Architecture
The test web server is spawned in a new thread. There reasons for this are:
- Better isolation
- Improve the debugging experience
With the current architecture knowing what is actually returned by the
server is easier because a web browser can be used while debugging the
code. Before if the code hit a breakpoint the webserver would be blocked
as well and nothing will be returned.
There main 2 pieces are:
index.ts: This is what modules consume. It is in charge of spawning
the server process and handle the communication with it. All methods are
async to achive this.
server.ts: The real web server. It uses express and listens to the
messages sent by index.ts.
The communication between both is done via IPC. Each message sent by
index.ts needs a response to confirm the action has been completed, i.e.
if it sends a start message it should receive a start message as well.
The following is an example of messages used:
{
"webhint": {
"type": "start"
}
}
Please note that all messages are "scoped" to webhint to avoid collision
with other possible messages.
IPC serializes the messages to JSON. Unfortunatelly it does not accept
replacer/reviver functions. The server
configuration accepts Buffers so in order to send the right data we need
to manually (de)serialize the messages in both ends.