Application
Application instance
Module ID
Module logger
Module name
Connected sockets
Endpoints of the Module
Returns the init promise to know if the module init is done or not
Name of the module
Should the Application wait for the Module to initialize
Add an endpoint to the module endpoints
Endpoint to add
addEndpoint(myEndpoint)
Add multiple endpoints
addEndpoints([ endpoint1, endpoint2, ... ])
Init method that is made to be overwritten with any async initialization that the server has to wait to be over before starting
A promise of the async process
await this.init()
console.log('Module initialization done.')
// Do stuff that has to wait the init
If autoInit is set on true, will run the init async method and put the result of the Promise in a variable that can be get by the application. This will allow the Application to be notified at the end of the init method of the Module If autoInit is set on false, will just put a Promise.resolve() in the init variable
Should the Application run the init method
initialize(true/false)
Listener for new client socket connection
Client socket
// Application
onSocketJoin((socket) => {
this._modules.forEach((module) => {
module.onSocketJoin(socket)
})
})
// MyModule
public onSocketJoin(socket) {
console.log(`Socket ${socket.id} joined`)
}
// index.ts
const app = new Application({...})
...
app.registerModule(MyModule)
...
// When a socket joins the server
// console: "Socket xZicnuePG5WehCSKAAAB joined"
Listener for disconnected client sockets
Client socket
// Application
onSocketJoin((socket) => {
...
socket.on('disconnected', (socket) => {
this.modules.forEach((module) => {
module.onSocketLeave(socket)
})
})
})
// MyModule
public onSocketLeave(socket) {
console.log(`Socket ${socket.id} leaved`)
}
// index.ts
const app = new Application({...})
...
app.registerModule(MyModule)
...
// When a socket leaves the server
// console: "Socket xZicnuePG5WehCSKAAAB leaved"
Handle /login POST route: Attempt to authenticate the user and send its information back
Query parameters:
- email <email> (mandatory) - Email of the user
eg: /login?email=test.test@test.test
- password <password> (mandatory) - Password (clear) of the user
eg: /login?email=test.test@test.test&password=passw0rd
Response: { message: 'success', user: UserSchema }
const email = '...'
const password = '...'
const user = await fetch(`/login?email=${email}&password=${password}`, { method: 'POST' })
.then((res) => res.json())
if(!user.error) {
console.log('Login successful !')
localStorage.setItem('user.email', user.email)
localStorage.setItem('user.token', user.token)
}
Handle /logout POST route: Logout the user if it exists
Query parameters:
- token
Response: { message: 'success', disconnected: true }
const token = '...'
const res = await fetch(`/logout?token=${token}`, { method: 'POST' })
.then((res) => res.json())
if(!res.error) {
console.log('Disconnected successfully !')
}
Handle /register POST route: Attempt to crete a new user of the given type (default: 'USER')
Query parameters:
- email <email> (mandatory) - Email of the new user
eg: /register?email=test.test@test.test
- password <password> (mandatory) - Password (clear) of the new user
eg: /register?email=test.test@test.test&password=passw0rd
- token <token> (mandatory) - JWT user token of the admin account that is creating the new user
eg: /register?email=test.test@test.test&password=passw0rd&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJoZWxsbyI6IndvcmxkIiwiaWF0IjoxNjE4ODIyNDgyfQ.FHDzAl7aWGW9GfUbc2n-B23VPk4aVa6cEdqU3ryvuR4
- type <type> (facultative) - Type of account ('USER' or 'ADMIN')
eg: /register?email=test.test@test.test&password=passw0rd&type=ADMIN&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJoZWxsbyI6IndvcmxkIiwiaWF0IjoxNjE4ODIyNDgyfQ.FHDzAl7aWGW9GfUbc2n-B23VPk4aVa6cEdqU3ryvuR4
eg: /register?email=test.test@test.test&password=passw0rd&type=USER&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJoZWxsbyI6IndvcmxkIiwiaWF0IjoxNjE4ODIyNDgyfQ.FHDzAl7aWGW9GfUbc2n-B23VPk4aVa6cEdqU3ryvuR4
Response: { message: 'success', user: UserSchema }
const email = '...'
const password = '...'
const token = '...'
const user = await fetch(`/register?email=${email}&password=${password}&token=${token}`, { method: 'POST' })
.then((res) => res.json())
if(!user.error) {
console.log('User successfully created !')
console.log(user) // { email: '...', password: '...', type: '...', token: null }
}
Register a task
Schedule of the task: Date, Moment or cron schedule
Action the will be run on schedule
Does auto start (default: true)
The task
export class MyModule extends Module {
constructor(app: Application) {
...
// Perform task every day at 10h00
this.registerTask('* * 10 * * *', this.performMyTask.bind(this), true)
}
public async performMyTask() {
...
}
}
Set the wait flag to the given value
New wait flag value
setWait(true/false)
Generated using TypeDoc
Allow user login, logout and registering