Skip to content

Latest commit

 

History

History

src

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

Source code of the application.

Introduction

The application is a server (backend) exposing the API of the editor library, by using JSON-RPC communication.

The files in this folder are used only to launch the server, while node_modules contains the whole editor library - which for now is split in two: a custom standard library and the editor library itself.

File system layout

Application:

Documentation

The application aims at providing source code edition services, independent of any user interface.

As all the actual functionalities are implemented in the editor library, we'll describe here only what is done to serve its API.

In short, a custom RPC protocol is used, over HTTP, using JSON for data serialization.

The modules behind the API exposed by the server are all stored in the modes module: once again, please refer to its documentation.

All of this is implemented by simply using a standard server library, currently directly embedded and developed in the editor library itself. Please refer to its documentation for any information on how to use it.

Routes

The Route is a common concept in HTTP servers: they define actions to be performed by the server based on some criteria concerning the requests it receives (like the URL path, the HTTP method, ...)

For more information about the implementation of the routes in the standard library, please refer to the server module.

The server instance accepts a list of routes as inputs: these are defined in the routes module file, which exports an array collection of route specifications.

Options

General options for the server.

Please refer to the server module for more information on available options.

Options used here are defined in the options module file (for convenience), which directly an object that follows the input format that the server library expects.

Logging

DISCLAIMER: section to be reviewed

You can setup a unique logger for the whole application in the logger module file.

This module must export an instance of a logger, that is an object which must repect the following interface:

Methods:

  • info
  • log
  • error
  • warn

Services

Services are actions performed on requests.

As previously stated, requests are handled by routes, and here we'll consider one service per request, so per route.

Ping

Standard service provided by the server library: documentation

Shutdown

Standard service provided by the server library: documentation

GUID identification

DISCLAIMER: make it a standard service of the server library

The /80d007698d534c3d9355667f462af2b0 route sends the content e531ebf04fad4e17b890c0ac72789956.

This is generally used to identify the server as being an instance of this backend. Indeed, there is a very low probability (which could be calculated) to encounter the same context with another server:

  • port
  • protocol handled: HTTP
  • request type: POST
  • route/response pair: using only one GUID introduces already a high level of collision avoidance, but using a pair of that is even FAR higher

RPC

Standard service provided by the server library: documentation

For now there is only one module registered for exposition through RPC: the editor module. Please refer to the respective documentation for more information.

Info

DISCLAIMER: not implemented by the library yet.

Standard service provided by the server library: documentation

Contribute

Try

With Node.js installed globally, launch the index file with the following command:

node index

You can tweak the options file, but take care about versioning issues behind.