@intuitionrobotics/thunderstorm 2.1.3 → 2.2.1
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/dist/app-backend/modules/server/ApiFunction.d.ts.map +1 -1
- package/dist/app-backend/modules/server/ApiFunction.js +6 -0
- package/dist/app-backend/modules/server/ApiFunction.js.map +1 -1
- package/dist/app-backend/modules/server/api-error.d.ts +21 -0
- package/dist/app-backend/modules/server/api-error.d.ts.map +1 -0
- package/dist/app-backend/modules/server/api-error.js +77 -0
- package/dist/app-backend/modules/server/api-error.js.map +1 -0
- package/dist/app-backend/modules/server/app-middleware.d.ts +13 -0
- package/dist/app-backend/modules/server/app-middleware.d.ts.map +1 -0
- package/dist/app-backend/modules/server/app-middleware.js +53 -0
- package/dist/app-backend/modules/server/app-middleware.js.map +1 -0
- package/dist/app-backend/modules/server/express-augmentation.d.ts +28 -0
- package/dist/app-backend/modules/server/express-augmentation.d.ts.map +1 -0
- package/dist/app-backend/modules/server/express-augmentation.js +2 -0
- package/dist/app-backend/modules/server/express-augmentation.js.map +1 -0
- package/dist/app-backend/modules/server/handler.d.ts +29 -0
- package/dist/app-backend/modules/server/handler.d.ts.map +1 -0
- package/dist/app-backend/modules/server/handler.js +49 -0
- package/dist/app-backend/modules/server/handler.js.map +1 -0
- package/dist/app-backend/modules/server/requireAuth.d.ts +24 -0
- package/dist/app-backend/modules/server/requireAuth.d.ts.map +1 -0
- package/dist/app-backend/modules/server/requireAuth.js +23 -0
- package/dist/app-backend/modules/server/requireAuth.js.map +1 -0
- package/dist/app-backend/modules/server/server-api.d.ts.map +1 -1
- package/dist/app-backend/modules/server/server-api.js +8 -55
- package/dist/app-backend/modules/server/server-api.js.map +1 -1
- package/dist/app-backend/modules/server/validators.d.ts +17 -0
- package/dist/app-backend/modules/server/validators.d.ts.map +1 -0
- package/dist/app-backend/modules/server/validators.js +37 -0
- package/dist/app-backend/modules/server/validators.js.map +1 -0
- package/dist/backend.d.ts +6 -0
- package/dist/backend.d.ts.map +1 -1
- package/dist/backend.js +12 -0
- package/dist/backend.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApiFunction.d.ts","sourceRoot":"","sources":["../../../../src/main/app-backend/modules/server/ApiFunction.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,KAAK,OAAO,EAAE,KAAK,MAAM,EAAC,MAAM,SAAS,CAAC;AAClD,OAAO,EACH,KAAK,kBAAkB,EAEvB,gBAAgB,EAChB,KAAK,uBAAuB,EAC/B,MAAM,+CAA+C,CAAC;
|
|
1
|
+
{"version":3,"file":"ApiFunction.d.ts","sourceRoot":"","sources":["../../../../src/main/app-backend/modules/server/ApiFunction.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,KAAK,OAAO,EAAE,KAAK,MAAM,EAAC,MAAM,SAAS,CAAC;AAClD,OAAO,EACH,KAAK,kBAAkB,EAEvB,gBAAgB,EAChB,KAAK,uBAAuB,EAC/B,MAAM,+CAA+C,CAAC;AAIvD,MAAM,MAAM,eAAe,GAAG;IAC1B;;;;;;;;;;;OAWG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mFAAmF;IACnF,OAAO,CAAC,EAAE,uBAAuB,CAAC;CACrC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,WACT,SAAQ,gBAAgB;IAExB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAU;IACvC,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,IAAI,CAAC,CAAU;gBAEX,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,eAAoB;IAMpD,SAAS,CAAC,MAAM,EAAE,MAAM;IAQxB,OAAO,KAAK,GAAG,GAoBd;IAED,WAAW,QAAO,kBAAkB,CAUlC;CACL"}
|
|
@@ -2,6 +2,7 @@ import express from "express";
|
|
|
2
2
|
import {} from "express";
|
|
3
3
|
import { Firebase_ExpressFunction, FirebaseFunction } from "@intuitionrobotics/firebase/backend-functions";
|
|
4
4
|
import { HttpServer_Class } from "./HttpServer.js";
|
|
5
|
+
import { terminalErrorHandler } from "./app-middleware.js";
|
|
5
6
|
/**
|
|
6
7
|
* An Express-backed HTTPS Cloud Function as a *regular module* — registered via
|
|
7
8
|
* `Storm.addModules(...)` like any other function, named after the module
|
|
@@ -49,6 +50,11 @@ export class ApiFunction extends FirebaseFunction {
|
|
|
49
50
|
// function serves `…/api/**`), so the router always mounts at root.
|
|
50
51
|
if (this.router)
|
|
51
52
|
httpServer.mountRouter(this.router);
|
|
53
|
+
// Terminal error handler for raw handler()-wrapped endpoints — MUST be
|
|
54
|
+
// registered LAST, after the router (Express is order-sensitive). Legacy
|
|
55
|
+
// ServerApi endpoints catch internally and never reach it, so it is
|
|
56
|
+
// purely additive: only handler()'s `.catch(next)` routes here.
|
|
57
|
+
app.use(terminalErrorHandler());
|
|
52
58
|
return this._app = app;
|
|
53
59
|
}
|
|
54
60
|
getFunction = () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApiFunction.js","sourceRoot":"","sources":["../../../../src/main/app-backend/modules/server/ApiFunction.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAA2B,MAAM,SAAS,CAAC;AAClD,OAAO,EAEH,wBAAwB,EACxB,gBAAgB,EAEnB,MAAM,+CAA+C,CAAC;AACvD,OAAO,EAAC,gBAAgB,EAAC,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"ApiFunction.js","sourceRoot":"","sources":["../../../../src/main/app-backend/modules/server/ApiFunction.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAA2B,MAAM,SAAS,CAAC;AAClD,OAAO,EAEH,wBAAwB,EACxB,gBAAgB,EAEnB,MAAM,+CAA+C,CAAC;AACvD,OAAO,EAAC,gBAAgB,EAAC,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAC,oBAAoB,EAAC,MAAM,qBAAqB,CAAC;AAsBzD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,OAAO,WACT,SAAQ,gBAAgB;IAEP,WAAW,CAAW;IAC/B,MAAM,CAAU;IAChB,IAAI,CAAW;IAEvB,YAAY,IAAY,EAAE,OAAwB,EAAE;QAChD,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED,SAAS,CAAC,MAAc;QACpB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,8EAA8E;IAC9E,4EAA4E;IAC5E,kEAAkE;IAClE,IAAY,GAAG;QACX,IAAI,IAAI,CAAC,IAAI;YACT,OAAO,IAAI,CAAC,IAAI,CAAC;QAErB,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,IAAI,OAAO,EAAE,CAAC;QAC1C,MAAM,UAAU,GAAG,IAAI,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1D,UAAU,CAAC,KAAK,EAAE,CAAC;QAEnB,0EAA0E;QAC1E,oEAAoE;QACpE,IAAI,IAAI,CAAC,MAAM;YACX,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAExC,uEAAuE;QACvE,yEAAyE;QACzE,oEAAoE;QACpE,gEAAgE;QAChE,GAAG,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC,CAAC;QAEhC,OAAO,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAC3B,CAAC;IAED,WAAW,GAAG,GAAuB,EAAE;QACnC,0EAA0E;QAC1E,8DAA8D;QAC9D,MAAM,eAAe,GAAG,IAAI,wBAAwB,CAChD,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,EAC9C,EAAC,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAC,CAAC,CAAC;QAEpD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QACnE,OAAO,eAAe,CAAC,WAAW,EAAE,CAAC;IACzC,CAAC,CAAC;CACL"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type Logger } from "@intuitionrobotics/ts-common";
|
|
2
|
+
import { ApiException } from "../../exceptions.js";
|
|
3
|
+
import { type HttpRequestData } from "./server-api.js";
|
|
4
|
+
/**
|
|
5
|
+
* The shared error-composition pipeline, extracted verbatim from
|
|
6
|
+
* `ServerApi.call()`'s catch block. BOTH the legacy `ServerApi` (its own
|
|
7
|
+
* internal catch) and the new app-level `terminalErrorHandler` route errors
|
|
8
|
+
* through this ONE function, so the two endpoint styles can never drift.
|
|
9
|
+
*
|
|
10
|
+
* It normalizes any thrown value to an `ApiException`, logs it, maps the
|
|
11
|
+
* response code to a `ServerErrorSeverity`, and — unless the exception opts
|
|
12
|
+
* out via `setDispatchError(false)` — composes an error message through the
|
|
13
|
+
* `Storm` instance and dispatches `dispatch_onServerError`.
|
|
14
|
+
*
|
|
15
|
+
* Returns the resolved `ApiException`; the CALLER decides how to write it
|
|
16
|
+
* (`response.serverError` for 500, `response.exception` otherwise). The
|
|
17
|
+
* `logger` lets callers attribute the logs to themselves (`ServerApi` passes
|
|
18
|
+
* `this`; the app-level handler passes its own module logger).
|
|
19
|
+
*/
|
|
20
|
+
export declare function composeApiError(err: any, requestData: HttpRequestData, logger: Logger): Promise<ApiException>;
|
|
21
|
+
//# sourceMappingURL=api-error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-error.d.ts","sourceRoot":"","sources":["../../../../src/main/app-backend/modules/server/api-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAIH,KAAK,MAAM,EAId,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAC,KAAK,eAAe,EAAC,MAAM,iBAAiB,CAAC;AAErD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAoEnH"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { BadImplementationException, dispatch_onServerError, isErrorOfType, MUSTNeverHappenException, ServerErrorSeverity, ValidationException } from "@intuitionrobotics/ts-common";
|
|
2
|
+
import { ApiException } from "../../exceptions.js";
|
|
3
|
+
import { Storm } from "../../core/Storm.js";
|
|
4
|
+
import {} from "./server-api.js";
|
|
5
|
+
/**
|
|
6
|
+
* The shared error-composition pipeline, extracted verbatim from
|
|
7
|
+
* `ServerApi.call()`'s catch block. BOTH the legacy `ServerApi` (its own
|
|
8
|
+
* internal catch) and the new app-level `terminalErrorHandler` route errors
|
|
9
|
+
* through this ONE function, so the two endpoint styles can never drift.
|
|
10
|
+
*
|
|
11
|
+
* It normalizes any thrown value to an `ApiException`, logs it, maps the
|
|
12
|
+
* response code to a `ServerErrorSeverity`, and — unless the exception opts
|
|
13
|
+
* out via `setDispatchError(false)` — composes an error message through the
|
|
14
|
+
* `Storm` instance and dispatches `dispatch_onServerError`.
|
|
15
|
+
*
|
|
16
|
+
* Returns the resolved `ApiException`; the CALLER decides how to write it
|
|
17
|
+
* (`response.serverError` for 500, `response.exception` otherwise). The
|
|
18
|
+
* `logger` lets callers attribute the logs to themselves (`ServerApi` passes
|
|
19
|
+
* `this`; the app-level handler passes its own module logger).
|
|
20
|
+
*/
|
|
21
|
+
export async function composeApiError(err, requestData, logger) {
|
|
22
|
+
let dispatchError = true;
|
|
23
|
+
let e = err;
|
|
24
|
+
let severity = ServerErrorSeverity.Warning;
|
|
25
|
+
if (typeof e === "string")
|
|
26
|
+
e = new BadImplementationException(`String was thrown: ${e}`);
|
|
27
|
+
if (!(e instanceof Error) && typeof e === "object")
|
|
28
|
+
e = new BadImplementationException(`Object instance was thrown: ${JSON.stringify(e)}`);
|
|
29
|
+
try {
|
|
30
|
+
logger.logErrorBold(e);
|
|
31
|
+
}
|
|
32
|
+
catch (e2) {
|
|
33
|
+
logger.logErrorBold("Error while handling error on request...", e2);
|
|
34
|
+
logger.logErrorBold(`Original error thrown: ${JSON.stringify(e)}`);
|
|
35
|
+
logger.logErrorBold(`-- Someone was stupid... you MUST only throw an Error and not objects or strings!! --`);
|
|
36
|
+
}
|
|
37
|
+
if (isErrorOfType(e, ValidationException))
|
|
38
|
+
e = new ApiException(400, "Validator exception", e);
|
|
39
|
+
if (!isErrorOfType(e, ApiException))
|
|
40
|
+
e = new ApiException(500, "Unexpected server error", e);
|
|
41
|
+
const apiException = isErrorOfType(e, ApiException);
|
|
42
|
+
if (!apiException)
|
|
43
|
+
throw new MUSTNeverHappenException("MUST NEVER REACH HERE!!!");
|
|
44
|
+
dispatchError = apiException.getDispatchError();
|
|
45
|
+
if (apiException.responseCode >= 500)
|
|
46
|
+
severity = ServerErrorSeverity.Error;
|
|
47
|
+
else if (apiException.responseCode >= 400)
|
|
48
|
+
severity = ServerErrorSeverity.Warning;
|
|
49
|
+
switch (apiException.responseCode) {
|
|
50
|
+
case 401:
|
|
51
|
+
severity = ServerErrorSeverity.Debug;
|
|
52
|
+
break;
|
|
53
|
+
case 404:
|
|
54
|
+
severity = ServerErrorSeverity.Info;
|
|
55
|
+
break;
|
|
56
|
+
case 403:
|
|
57
|
+
severity = ServerErrorSeverity.Warning;
|
|
58
|
+
break;
|
|
59
|
+
case 500:
|
|
60
|
+
severity = ServerErrorSeverity.Critical;
|
|
61
|
+
break;
|
|
62
|
+
}
|
|
63
|
+
if (dispatchError) {
|
|
64
|
+
try {
|
|
65
|
+
const storm = Storm.getInstance();
|
|
66
|
+
if (storm) {
|
|
67
|
+
const message = await storm.errorMessageComposer(requestData, apiException);
|
|
68
|
+
await dispatch_onServerError.dispatchModuleAsync(severity, message);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
catch (e) {
|
|
72
|
+
logger.logError("Error while handing server error", e);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return apiException;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=api-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-error.js","sourceRoot":"","sources":["../../../../src/main/app-backend/modules/server/api-error.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type ErrorRequestHandler } from "express";
|
|
2
|
+
/**
|
|
3
|
+
* The single app-level error handler for raw (`handler()`-wrapped) endpoints.
|
|
4
|
+
* Register it LAST, after the router (see `ApiFunction`). It routes the error
|
|
5
|
+
* through the shared `composeApiError` pipeline, then writes the response with
|
|
6
|
+
* the same shape + `ServerApi.isDebug` gating as `ApiResponse.serverError` /
|
|
7
|
+
* `ApiResponse.exception` (server-api.ts:428-440).
|
|
8
|
+
*
|
|
9
|
+
* Legacy `ServerApi` endpoints never reach here (they catch internally), so
|
|
10
|
+
* this is purely additive.
|
|
11
|
+
*/
|
|
12
|
+
export declare function terminalErrorHandler(): ErrorRequestHandler;
|
|
13
|
+
//# sourceMappingURL=app-middleware.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-middleware.d.ts","sourceRoot":"","sources":["../../../../src/main/app-backend/modules/server/app-middleware.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,KAAK,mBAAmB,EAAe,MAAM,SAAS,CAAC;AAwB/D;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,IAAI,mBAAmB,CAsB1D"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Logger } from "@intuitionrobotics/ts-common";
|
|
2
|
+
import {} from "express";
|
|
3
|
+
import { parse } from "url";
|
|
4
|
+
import { composeApiError } from "./api-error.js";
|
|
5
|
+
import { ServerApi } from "./server-api.js";
|
|
6
|
+
import { HttpMethod } from "../../../shared/types.js";
|
|
7
|
+
const logger = new Logger("terminalErrorHandler");
|
|
8
|
+
/**
|
|
9
|
+
* Build the `HttpRequestData` shape (the same one `ServerApi.call()` assembles,
|
|
10
|
+
* server-api.ts:154-161) from a raw Express request, for the Storm error
|
|
11
|
+
* composer.
|
|
12
|
+
*/
|
|
13
|
+
function requestDataFrom(req) {
|
|
14
|
+
return {
|
|
15
|
+
method: (req.method ? req.method.toLowerCase() : HttpMethod.ALL),
|
|
16
|
+
originalUrl: req.path,
|
|
17
|
+
headers: req.headers,
|
|
18
|
+
url: req.url,
|
|
19
|
+
query: parse(req.url, true).query,
|
|
20
|
+
body: req.body
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* The single app-level error handler for raw (`handler()`-wrapped) endpoints.
|
|
25
|
+
* Register it LAST, after the router (see `ApiFunction`). It routes the error
|
|
26
|
+
* through the shared `composeApiError` pipeline, then writes the response with
|
|
27
|
+
* the same shape + `ServerApi.isDebug` gating as `ApiResponse.serverError` /
|
|
28
|
+
* `ApiResponse.exception` (server-api.ts:428-440).
|
|
29
|
+
*
|
|
30
|
+
* Legacy `ServerApi` endpoints never reach here (they catch internally), so
|
|
31
|
+
* this is purely additive.
|
|
32
|
+
*/
|
|
33
|
+
export function terminalErrorHandler() {
|
|
34
|
+
return async (err, req, res, next) => {
|
|
35
|
+
// Headers already sent (stream/SSE) → can't rewrite the response; let
|
|
36
|
+
// Express's default finalize the (already-broken) connection.
|
|
37
|
+
if (res.headersSent)
|
|
38
|
+
return next(err);
|
|
39
|
+
const apiException = await composeApiError(err, requestDataFrom(req), logger);
|
|
40
|
+
const responseBody = apiException.responseBody;
|
|
41
|
+
if (!ServerApi.isDebug)
|
|
42
|
+
delete responseBody.debugMessage;
|
|
43
|
+
if (apiException.responseCode === 500) {
|
|
44
|
+
const cause = apiException.cause;
|
|
45
|
+
const stack = cause ? cause.stack : apiException.stack;
|
|
46
|
+
const message = (cause ? cause.message : apiException.message) || "";
|
|
47
|
+
res.status(500).set("Content-Type", "text/plain").send(ServerApi.isDebug && stack ? stack : message);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
res.status(apiException.responseCode).set("Content-Type", "application/json").send(JSON.stringify(responseBody, null, 2));
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=app-middleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-middleware.js","sourceRoot":"","sources":["../../../../src/main/app-backend/modules/server/app-middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,8BAA8B,CAAC;AACpD,OAAO,EAAwC,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAC,KAAK,EAAC,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAC,eAAe,EAAC,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAC,SAAS,EAAuB,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAC,UAAU,EAAC,MAAM,0BAA0B,CAAC;AAEpD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,sBAAsB,CAAC,CAAC;AAElD;;;;GAIG;AACH,SAAS,eAAe,CAAC,GAAY;IACjC,OAAO;QACH,MAAM,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAe;QAC9E,WAAW,EAAE,GAAG,CAAC,IAAI;QACrB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,GAAG,EAAE,GAAG,CAAC,GAAG;QACZ,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,KAAK;QACjC,IAAI,EAAE,GAAG,CAAC,IAAI;KACjB,CAAC;AACN,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB;IAChC,OAAO,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACjC,sEAAsE;QACtE,8DAA8D;QAC9D,IAAI,GAAG,CAAC,WAAW;YACf,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;QAErB,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,GAAG,EAAE,eAAe,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;QAC9E,MAAM,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC;QAC/C,IAAI,CAAC,SAAS,CAAC,OAAO;YAClB,OAAO,YAAY,CAAC,YAAY,CAAC;QAErC,IAAI,YAAY,CAAC,YAAY,KAAK,GAAG,EAAE,CAAC;YACpC,MAAM,KAAK,GAAI,YAA0C,CAAC,KAAK,CAAC;YAChE,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC;YACvD,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACrE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACrG,OAAO;QACX,CAAC;QAED,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9H,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adds `req.account` to Express's `Request`, populated by `makeRequireAuth`.
|
|
3
|
+
*
|
|
4
|
+
* `AuthAccount` is intentionally EMPTY here so CONSUMERS widen it via
|
|
5
|
+
* declaration merging to their real account shape, e.g. in ir-q-support:
|
|
6
|
+
*
|
|
7
|
+
* declare global { namespace Express { interface AuthAccount {
|
|
8
|
+
* _id: string;
|
|
9
|
+
* email: string;
|
|
10
|
+
* } } }
|
|
11
|
+
*
|
|
12
|
+
* (A single `account` property can't be re-typed by two declarations, but an
|
|
13
|
+
* open interface merges cleanly across the framework and each consumer.)
|
|
14
|
+
*
|
|
15
|
+
* Side-effect-imported from `backend.ts` so the global merge loads transitively
|
|
16
|
+
* for consumers — without that, `req.account` silently degrades to `any`.
|
|
17
|
+
*/
|
|
18
|
+
declare global {
|
|
19
|
+
namespace Express {
|
|
20
|
+
interface AuthAccount {
|
|
21
|
+
}
|
|
22
|
+
interface Request {
|
|
23
|
+
account?: AuthAccount;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export {};
|
|
28
|
+
//# sourceMappingURL=express-augmentation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"express-augmentation.d.ts","sourceRoot":"","sources":["../../../../src/main/app-backend/modules/server/express-augmentation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,CAAC,MAAM,CAAC;IAIX,UAAU,OAAO,CAAC;QACd,UAAU,WAAW;SACpB;QAED,UAAU,OAAO;YACb,OAAO,CAAC,EAAE,WAAW,CAAC;SACzB;KACJ;CACJ;AAED,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"express-augmentation.js","sourceRoot":"","sources":["../../../../src/main/app-backend/modules/server/express-augmentation.ts"],"names":[],"mappings":"AA+BA,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type NextFunction, type Request, type RequestHandler, type Response } from "express";
|
|
2
|
+
import { type ApiTypeBinder } from "../../../shared/types.js";
|
|
3
|
+
/**
|
|
4
|
+
* An Express request typed off the same `ApiTypeBinder` the endpoint declares,
|
|
5
|
+
* so `req.body` / `req.query` and the handler's return value are all typed.
|
|
6
|
+
*/
|
|
7
|
+
export type TypedRequest<Binder extends ApiTypeBinder<any, any, any, any>> = Request<Record<string, string>, Binder["response"], Binder["body"], Binder["queryParams"]>;
|
|
8
|
+
/**
|
|
9
|
+
* A plain endpoint handler: receives the typed request (plus the raw `res`/`next`
|
|
10
|
+
* for the rare stream/redirect case) and usually just `return`s a value.
|
|
11
|
+
*/
|
|
12
|
+
export type TypedHandler<Binder extends ApiTypeBinder<any, any, any, any>> = (req: TypedRequest<Binder>, res: Response, next: NextFunction) => Promise<Binder["response"] | void> | Binder["response"] | void;
|
|
13
|
+
export type HandlerOptions = {
|
|
14
|
+
printResponse?: boolean;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Wrap a plain typed handler fn as an Express `RequestHandler`.
|
|
18
|
+
*
|
|
19
|
+
* Why a wrapper is needed at all on Express 4: a thrown/rejected async handler
|
|
20
|
+
* is NOT forwarded to `app.use((err,…)=>)` — so we `.catch(next)` to route it
|
|
21
|
+
* to the app-level `terminalErrorHandler`. We also auto-serialize the return
|
|
22
|
+
* value (object→json, "<html…>"→html, else text), matching the legacy
|
|
23
|
+
* `ServerApi.call()` behavior so handlers can simply `return`.
|
|
24
|
+
*
|
|
25
|
+
* A handler may instead write to `res` directly (stream/SSE/redirect): once
|
|
26
|
+
* `res.headersSent`, autoSend is a no-op. Rule: return a value XOR write `res`.
|
|
27
|
+
*/
|
|
28
|
+
export declare function handler<Binder extends ApiTypeBinder<any, any, any, any>>(fn: TypedHandler<Binder>, opts?: HandlerOptions): RequestHandler;
|
|
29
|
+
//# sourceMappingURL=handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/main/app-backend/modules/server/handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,KAAK,YAAY,EAAE,KAAK,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,QAAQ,EAAC,MAAM,SAAS,CAAC;AAC5F,OAAO,EAAC,KAAK,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAI5D;;;GAGG;AACH,MAAM,MAAM,YAAY,CAAC,MAAM,SAAS,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IACrE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;AAE/F;;;GAGG;AACH,MAAM,MAAM,YAAY,CAAC,MAAM,SAAS,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IACrE,CAAC,GAAG,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,KAAK,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;AAErI,MAAM,MAAM,cAAc,GAAG;IAIzB,aAAa,CAAC,EAAE,OAAO,CAAA;CAC1B,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,OAAO,CAAC,MAAM,SAAS,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACpE,EAAE,EAAE,YAAY,CAAC,MAAM,CAAC,EACxB,IAAI,GAAE,cAAmB,GAC1B,cAAc,CAOhB"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Logger } from "@intuitionrobotics/ts-common";
|
|
2
|
+
import {} from "express";
|
|
3
|
+
import {} from "../../../shared/types.js";
|
|
4
|
+
const logger = new Logger("api-handler");
|
|
5
|
+
/**
|
|
6
|
+
* Wrap a plain typed handler fn as an Express `RequestHandler`.
|
|
7
|
+
*
|
|
8
|
+
* Why a wrapper is needed at all on Express 4: a thrown/rejected async handler
|
|
9
|
+
* is NOT forwarded to `app.use((err,…)=>)` — so we `.catch(next)` to route it
|
|
10
|
+
* to the app-level `terminalErrorHandler`. We also auto-serialize the return
|
|
11
|
+
* value (object→json, "<html…>"→html, else text), matching the legacy
|
|
12
|
+
* `ServerApi.call()` behavior so handlers can simply `return`.
|
|
13
|
+
*
|
|
14
|
+
* A handler may instead write to `res` directly (stream/SSE/redirect): once
|
|
15
|
+
* `res.headersSent`, autoSend is a no-op. Rule: return a value XOR write `res`.
|
|
16
|
+
*/
|
|
17
|
+
export function handler(fn, opts = {}) {
|
|
18
|
+
return (req, res, next) => {
|
|
19
|
+
Promise.resolve()
|
|
20
|
+
.then(() => fn(req, res, next))
|
|
21
|
+
.then(value => autoSend(res, value, opts))
|
|
22
|
+
.catch(next);
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Mirrors the response auto-detect of the legacy `ServerApi.call()`
|
|
27
|
+
* (server-api.ts:170-187) — including the 2-space JSON formatting and the
|
|
28
|
+
* case-insensitive "<html" sniff — so migrated endpoints stay byte-identical.
|
|
29
|
+
*/
|
|
30
|
+
function autoSend(res, value, opts) {
|
|
31
|
+
if (res.headersSent)
|
|
32
|
+
return; // handler wrote the response itself (stream/SSE/redirect/manual res.*)
|
|
33
|
+
if (value === undefined || value === null) {
|
|
34
|
+
res.status(200).end();
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
if (opts.printResponse !== false)
|
|
38
|
+
logger.logVerbose(" -- Response:", value);
|
|
39
|
+
if (typeof value === "object") {
|
|
40
|
+
res.status(200).set("Content-Type", "application/json").send(JSON.stringify(value, null, 2));
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
if (typeof value === "string" && value.toLowerCase().startsWith("<html")) {
|
|
44
|
+
res.status(200).set("Content-Type", "text/html").send(value);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
res.status(200).set("Content-Type", "text/plain").send(String(value));
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../../src/main/app-backend/modules/server/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,8BAA8B,CAAC;AACpD,OAAO,EAAqE,MAAM,SAAS,CAAC;AAC5F,OAAO,EAAoB,MAAM,0BAA0B,CAAC;AAE5D,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC;AAuBzC;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,OAAO,CACnB,EAAwB,EACxB,OAAuB,EAAE;IAEzB,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACtB,OAAO,CAAC,OAAO,EAAE;aACZ,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAsC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;aACjE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;aACzC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,SAAS,QAAQ,CAAC,GAAa,EAAE,KAAc,EAAE,IAAoB;IACjE,IAAI,GAAG,CAAC,WAAW;QACf,OAAO,CAAG,uEAAuE;IAErF,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACxC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QACtB,OAAO;IACX,CAAC;IAED,IAAI,IAAI,CAAC,aAAa,KAAK,KAAK;QAC5B,MAAM,CAAC,UAAU,CAAC,eAAe,EAAE,KAAe,CAAC,CAAC;IAExD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7F,OAAO;IACX,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACvE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7D,OAAO;IACX,CAAC;IAED,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1E,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type Request, type RequestHandler, type Response } from "express";
|
|
2
|
+
/**
|
|
3
|
+
* The auth logic itself (session/JWT validation + scope checks) lives in the
|
|
4
|
+
* CONSUMER (e.g. `AccountModule.validateSession` / `KasperoProxy.validateRequest`),
|
|
5
|
+
* so the framework ships only this factory. A validator resolves the request to
|
|
6
|
+
* an account (or rejects → the rejection flows to the terminal error handler).
|
|
7
|
+
*
|
|
8
|
+
* The legacy validators take an `ApiResponse`-shaped 3rd arg to refresh the JWT
|
|
9
|
+
* response header; the consumer adapts the raw `res` to that shape when
|
|
10
|
+
* instantiating (a tiny header sink) — see the migration recipe.
|
|
11
|
+
*/
|
|
12
|
+
export type AuthValidator = (req: Request, scopes: string[], res: Response) => Promise<Express.AuthAccount>;
|
|
13
|
+
/**
|
|
14
|
+
* Build a `requireAuth(...scopes)` middleware from a consumer auth validator.
|
|
15
|
+
*
|
|
16
|
+
* export const requireAuth = makeRequireAuth((req, scopes, res) =>
|
|
17
|
+
* AccountModule.validateSession(req, scopes, headerSink(res)));
|
|
18
|
+
*
|
|
19
|
+
* The returned middleware populates `req.account` and works both per-route
|
|
20
|
+
* (`router.post("/x", requireAuth("admin"), handler(fn))`) and at router-group
|
|
21
|
+
* level (`router.use(requireAuth())`).
|
|
22
|
+
*/
|
|
23
|
+
export declare function makeRequireAuth(validator: AuthValidator): (...scopes: string[]) => RequestHandler;
|
|
24
|
+
//# sourceMappingURL=requireAuth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requireAuth.d.ts","sourceRoot":"","sources":["../../../../src/main/app-backend/modules/server/requireAuth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,QAAQ,EAAC,MAAM,SAAS,CAAC;AAE5F;;;;;;;;;GASG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,QAAQ,KAAK,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAE5G;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,aAAa,IAC5C,GAAG,QAAQ,MAAM,EAAE,KAAG,cAAc,CAU/C"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import {} from "express";
|
|
2
|
+
/**
|
|
3
|
+
* Build a `requireAuth(...scopes)` middleware from a consumer auth validator.
|
|
4
|
+
*
|
|
5
|
+
* export const requireAuth = makeRequireAuth((req, scopes, res) =>
|
|
6
|
+
* AccountModule.validateSession(req, scopes, headerSink(res)));
|
|
7
|
+
*
|
|
8
|
+
* The returned middleware populates `req.account` and works both per-route
|
|
9
|
+
* (`router.post("/x", requireAuth("admin"), handler(fn))`) and at router-group
|
|
10
|
+
* level (`router.use(requireAuth())`).
|
|
11
|
+
*/
|
|
12
|
+
export function makeRequireAuth(validator) {
|
|
13
|
+
return (...scopes) => (req, res, next) => {
|
|
14
|
+
Promise.resolve()
|
|
15
|
+
.then(() => validator(req, scopes, res))
|
|
16
|
+
.then(account => {
|
|
17
|
+
req.account = account;
|
|
18
|
+
next();
|
|
19
|
+
})
|
|
20
|
+
.catch(next);
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=requireAuth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requireAuth.js","sourceRoot":"","sources":["../../../../src/main/app-backend/modules/server/requireAuth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqE,MAAM,SAAS,CAAC;AAc5F;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAAC,SAAwB;IACpD,OAAO,CAAC,GAAG,MAAgB,EAAkB,EAAE,CAC3C,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;QAChD,OAAO,CAAC,OAAO,EAAE;aACZ,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;aACvC,IAAI,CAAC,OAAO,CAAC,EAAE;YACZ,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;YACtB,IAAI,EAAE,CAAC;QACX,CAAC,CAAC;aACD,KAAK,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC,CAAC;AACV,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-api.d.ts","sourceRoot":"","sources":["../../../../src/main/app-backend/modules/server/server-api.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"server-api.d.ts","sourceRoot":"","sources":["../../../../src/main/app-backend/modules/server/server-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { _keys,
|
|
1
|
+
import { _keys, Logger, LogLevel, merge, validate } from "@intuitionrobotics/ts-common";
|
|
2
2
|
import { Stream } from "stream";
|
|
3
3
|
import { parse } from "url";
|
|
4
4
|
import {} from "./HttpServer.js";
|
|
@@ -9,7 +9,7 @@ import { assertProperty } from "../../utils/to-be-removed.js";
|
|
|
9
9
|
import { ApiException } from "../../exceptions.js";
|
|
10
10
|
import {} from "../../utils/types.js";
|
|
11
11
|
import { RemoteProxy } from "../proxy/RemoteProxy.js";
|
|
12
|
-
import {
|
|
12
|
+
import { composeApiError } from "./api-error.js";
|
|
13
13
|
export class ServerApi extends Logger {
|
|
14
14
|
static isDebug;
|
|
15
15
|
printResponse = true;
|
|
@@ -129,59 +129,12 @@ export class ServerApi extends Logger {
|
|
|
129
129
|
return await response.text(200, toReturn);
|
|
130
130
|
}
|
|
131
131
|
catch (err) {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
e = new BadImplementationException(`Object instance was thrown: ${JSON.stringify(e)}`);
|
|
139
|
-
try {
|
|
140
|
-
this.logErrorBold(e);
|
|
141
|
-
}
|
|
142
|
-
catch (e2) {
|
|
143
|
-
this.logErrorBold("Error while handling error on request...", e2);
|
|
144
|
-
this.logErrorBold(`Original error thrown: ${JSON.stringify(e)}`);
|
|
145
|
-
this.logErrorBold(`-- Someone was stupid... you MUST only throw an Error and not objects or strings!! --`);
|
|
146
|
-
}
|
|
147
|
-
if (isErrorOfType(e, ValidationException))
|
|
148
|
-
e = new ApiException(400, "Validator exception", e);
|
|
149
|
-
if (!isErrorOfType(e, ApiException))
|
|
150
|
-
e = new ApiException(500, "Unexpected server error", e);
|
|
151
|
-
const apiException = isErrorOfType(e, ApiException);
|
|
152
|
-
if (!apiException)
|
|
153
|
-
throw new MUSTNeverHappenException("MUST NEVER REACH HERE!!!");
|
|
154
|
-
dispatchError = apiException.getDispatchError();
|
|
155
|
-
if (apiException.responseCode >= 500)
|
|
156
|
-
severity = ServerErrorSeverity.Error;
|
|
157
|
-
else if (apiException.responseCode >= 400)
|
|
158
|
-
severity = ServerErrorSeverity.Warning;
|
|
159
|
-
switch (apiException.responseCode) {
|
|
160
|
-
case 401:
|
|
161
|
-
severity = ServerErrorSeverity.Debug;
|
|
162
|
-
break;
|
|
163
|
-
case 404:
|
|
164
|
-
severity = ServerErrorSeverity.Info;
|
|
165
|
-
break;
|
|
166
|
-
case 403:
|
|
167
|
-
severity = ServerErrorSeverity.Warning;
|
|
168
|
-
break;
|
|
169
|
-
case 500:
|
|
170
|
-
severity = ServerErrorSeverity.Critical;
|
|
171
|
-
break;
|
|
172
|
-
}
|
|
173
|
-
if (dispatchError) {
|
|
174
|
-
try {
|
|
175
|
-
const storm = Storm.getInstance();
|
|
176
|
-
if (storm) {
|
|
177
|
-
const message = await storm.errorMessageComposer(requestData, apiException);
|
|
178
|
-
await dispatch_onServerError.dispatchModuleAsync(severity, message);
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
catch (e) {
|
|
182
|
-
this.logError("Error while handing server error", e);
|
|
183
|
-
}
|
|
184
|
-
}
|
|
132
|
+
// The normalize → severity → Storm-composer → dispatch pipeline now
|
|
133
|
+
// lives in composeApiError, shared with the app-level
|
|
134
|
+
// terminalErrorHandler so legacy and raw-handler endpoints never
|
|
135
|
+
// drift. We still write the response here: legacy endpoints catch
|
|
136
|
+
// internally and never throw past `.handler`.
|
|
137
|
+
const apiException = await composeApiError(err, requestData, this);
|
|
185
138
|
if (apiException.responseCode === 500)
|
|
186
139
|
return response.serverError(apiException);
|
|
187
140
|
return response.exception(apiException);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-api.js","sourceRoot":"","sources":["../../../../src/main/app-backend/modules/server/server-api.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server-api.js","sourceRoot":"","sources":["../../../../src/main/app-backend/modules/server/server-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type ValidatorTypeResolver } from "@intuitionrobotics/ts-common";
|
|
2
|
+
import { type RequestHandler } from "express";
|
|
3
|
+
/**
|
|
4
|
+
* Body-validation middleware. Runs the same ts-common `validate()` the legacy
|
|
5
|
+
* `ServerApi` used (server-api.ts:164), forwarding a `ValidationException` to
|
|
6
|
+
* the app-level `terminalErrorHandler` (which maps it to 400 via
|
|
7
|
+
* `composeApiError`, identical to today) through `next(err)`.
|
|
8
|
+
*
|
|
9
|
+
* Compose it at the route site: `router.post("/x", validateBody(V), handler(fn))`.
|
|
10
|
+
*/
|
|
11
|
+
export declare function validateBody<B = any>(validator: ValidatorTypeResolver<B>): RequestHandler;
|
|
12
|
+
/**
|
|
13
|
+
* Query-validation middleware. Uses Express-parsed `req.query` (the raw model
|
|
14
|
+
* drops the old manual `parse(req.url, true).query`).
|
|
15
|
+
*/
|
|
16
|
+
export declare function validateQuery<P = any>(validator: ValidatorTypeResolver<P>): RequestHandler;
|
|
17
|
+
//# sourceMappingURL=validators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../../../src/main/app-backend/modules/server/validators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,qBAAqB,EAAC,MAAM,8BAA8B,CAAC;AAClF,OAAO,EAAC,KAAK,cAAc,EAAC,MAAM,SAAS,CAAC;AAE5C;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,CAAC,GAAG,GAAG,EAAE,SAAS,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAAG,cAAc,CASzF;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,GAAG,GAAG,EAAE,SAAS,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAAG,cAAc,CAS1F"}
|