@yrpri/api 9.0.172 → 9.0.173
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/app.d.ts +2 -1
- package/app.js +40 -22
- package/package.json +1 -1
- package/webSockets.d.ts +2 -2
package/app.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import express from "express";
|
|
2
|
+
import type { Server as HttpServer } from "http";
|
|
2
3
|
import WebSocket, { WebSocketServer } from "ws";
|
|
3
4
|
import { RedisClientType } from "@redis/client";
|
|
4
5
|
import { WebSocketsManager } from "./webSockets.js";
|
|
@@ -49,6 +50,6 @@ export declare class YourPrioritiesApi {
|
|
|
49
50
|
registerUserLogin: (user: any | null, userId: number, loginProvider: string, req: YpRequest, done: () => void) => void;
|
|
50
51
|
setupErrorHandler(): void;
|
|
51
52
|
listen(): Promise<void>;
|
|
52
|
-
setupHttpsServer():
|
|
53
|
+
setupHttpsServer(): Promise<HttpServer>;
|
|
53
54
|
}
|
|
54
55
|
export {};
|
package/app.js
CHANGED
|
@@ -892,7 +892,7 @@ export class YourPrioritiesApi {
|
|
|
892
892
|
setupErrorHandler() {
|
|
893
893
|
this.app.use((err, req, res, next) => {
|
|
894
894
|
if (err instanceof auth.UnauthorizedError) {
|
|
895
|
-
log.
|
|
895
|
+
log.debug("UnauthorizedError debug", { user: req.user });
|
|
896
896
|
log.error("User Unauthorized", {
|
|
897
897
|
context: "unauthorizedError",
|
|
898
898
|
user: toJson(req.user),
|
|
@@ -976,28 +976,46 @@ export class YourPrioritiesApi {
|
|
|
976
976
|
});
|
|
977
977
|
}
|
|
978
978
|
async listen() {
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
if (process.env.YOUR_PRIORITIES_LISTEN_HOST) {
|
|
987
|
-
server = this.app.listen(portNumber, process.env.YOUR_PRIORITIES_LISTEN_HOST, () => {
|
|
988
|
-
log.info(`Your Priorities Platform API Server listening on port ${process.env.YOUR_PRIORITIES_LISTEN_HOST}:${this.app.get("port")} on ${process.env.NODE_ENV}`);
|
|
989
|
-
});
|
|
979
|
+
try {
|
|
980
|
+
log.info("Starting Your Priorities Platform API Server");
|
|
981
|
+
const server = await this.setupHttpsServer();
|
|
982
|
+
log.debug("Server created");
|
|
983
|
+
this.webSocketsManager = new WebSocketsManager(this.wsClients, this.redisClient, server);
|
|
984
|
+
log.debug("WebSocketsManager created");
|
|
985
|
+
await this.webSocketsManager.listen();
|
|
990
986
|
}
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
log.error("Error listening on port", { err });
|
|
995
|
-
}
|
|
996
|
-
log.info("Your Priorities Platform API Server listening on port " +
|
|
997
|
-
server.address().port +
|
|
998
|
-
` on ${process.env.NODE_ENV}`);
|
|
999
|
-
});
|
|
987
|
+
catch (err) {
|
|
988
|
+
log.error("Server failed to start", { err: err?.message || err });
|
|
989
|
+
process.exit(1);
|
|
1000
990
|
}
|
|
1001
|
-
|
|
991
|
+
}
|
|
992
|
+
async setupHttpsServer() {
|
|
993
|
+
const port = Number(process.env.PORT) || 4242;
|
|
994
|
+
const host = process.env.YOUR_PRIORITIES_LISTEN_HOST || "0.0.0.0";
|
|
995
|
+
this.app.set("port", port);
|
|
996
|
+
return await new Promise((resolve, reject) => {
|
|
997
|
+
const server = this.app.listen(port, host);
|
|
998
|
+
const onError = (err) => {
|
|
999
|
+
server.removeListener("listening", onListening);
|
|
1000
|
+
log.error("HTTP server listen error", {
|
|
1001
|
+
code: err?.code,
|
|
1002
|
+
message: err?.message,
|
|
1003
|
+
host,
|
|
1004
|
+
port,
|
|
1005
|
+
});
|
|
1006
|
+
reject(err);
|
|
1007
|
+
};
|
|
1008
|
+
const onListening = () => {
|
|
1009
|
+
server.removeListener("error", onError);
|
|
1010
|
+
const addr = server.address();
|
|
1011
|
+
const rendered = typeof addr === "string"
|
|
1012
|
+
? addr
|
|
1013
|
+
: `${addr.address}:${addr.port}`;
|
|
1014
|
+
log.info(`Your Priorities Platform API Server listening on ${rendered} (env=${process.env.NODE_ENV})`);
|
|
1015
|
+
resolve(server);
|
|
1016
|
+
};
|
|
1017
|
+
server.once("error", onError);
|
|
1018
|
+
server.once("listening", onListening);
|
|
1019
|
+
});
|
|
1002
1020
|
}
|
|
1003
1021
|
}
|
package/package.json
CHANGED
package/webSockets.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Server } from "
|
|
1
|
+
import { Server as HttpServer } from "http";
|
|
2
2
|
import { RedisClientType } from "@redis/client";
|
|
3
3
|
import { WebSocketServer, WebSocket } from "ws";
|
|
4
4
|
/**
|
|
@@ -12,7 +12,7 @@ export declare class WebSocketsManager {
|
|
|
12
12
|
ws: WebSocketServer;
|
|
13
13
|
redisClient: RedisClientType;
|
|
14
14
|
private pingInterval;
|
|
15
|
-
constructor(wsClients: Map<string, WebSocket>, redisClient: RedisClientType, server:
|
|
15
|
+
constructor(wsClients: Map<string, WebSocket>, redisClient: RedisClientType, server: HttpServer);
|
|
16
16
|
/**
|
|
17
17
|
* Main entry point to start listening for connections
|
|
18
18
|
* and initialize Redis pub/sub, heartbeat, etc.
|