@intuitionrobotics/thunderstorm 2.2.2 → 2.3.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/api/v1/utils/health/get.d.ts +4 -12
- package/dist/app-backend/api/v1/utils/health/get.d.ts.map +1 -1
- package/dist/app-backend/api/v1/utils/health/get.js +40 -50
- package/dist/app-backend/api/v1/utils/health/get.js.map +1 -1
- package/dist/app-backend/api/v1/utils/version/assert.d.ts +2 -8
- package/dist/app-backend/api/v1/utils/version/assert.d.ts.map +1 -1
- package/dist/app-backend/api/v1/utils/version/assert.js +7 -15
- package/dist/app-backend/api/v1/utils/version/assert.js.map +1 -1
- package/dist/app-backend/core/Storm.js +2 -2
- package/dist/app-backend/core/Storm.js.map +1 -1
- package/dist/app-backend/modules/server/HttpServer.js +2 -2
- package/dist/app-backend/modules/server/HttpServer.js.map +1 -1
- package/dist/app-backend/modules/server/app-middleware.d.ts +1 -1
- package/dist/app-backend/modules/server/app-middleware.js +4 -4
- package/dist/app-backend/modules/server/app-middleware.js.map +1 -1
- package/dist/app-backend/modules/server/handler.d.ts +8 -0
- package/dist/app-backend/modules/server/handler.d.ts.map +1 -1
- package/dist/app-backend/modules/server/handler.js +18 -3
- package/dist/app-backend/modules/server/handler.js.map +1 -1
- package/dist/app-backend/modules/server/requireAuth.d.ts +19 -0
- package/dist/app-backend/modules/server/requireAuth.d.ts.map +1 -1
- package/dist/app-backend/modules/server/requireAuth.js +38 -0
- package/dist/app-backend/modules/server/requireAuth.js.map +1 -1
- package/dist/app-backend/modules/server/server-api.d.ts +6 -46
- package/dist/app-backend/modules/server/server-api.d.ts.map +1 -1
- package/dist/app-backend/modules/server/server-api.js +20 -186
- package/dist/app-backend/modules/server/server-api.js.map +1 -1
- package/dist/backend.d.ts.map +1 -1
- package/dist/backend.js +6 -5
- package/dist/backend.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
|
@@ -1,188 +1,24 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Logger } from "@intuitionrobotics/ts-common";
|
|
2
2
|
import { Stream } from "stream";
|
|
3
|
-
import { parse } from "url";
|
|
4
|
-
import {} from "./HttpServer.js";
|
|
5
3
|
import {} from "http";
|
|
6
4
|
// noinspection TypeScriptPreferShortImport
|
|
7
|
-
import {
|
|
8
|
-
import { assertProperty } from "../../utils/to-be-removed.js";
|
|
5
|
+
import {} from "../../../shared/types.js";
|
|
9
6
|
import { ApiException } from "../../exceptions.js";
|
|
10
7
|
import {} from "../../utils/types.js";
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
// leave this empty — the routes file owns the path.
|
|
22
|
-
relativePath;
|
|
23
|
-
middlewares;
|
|
24
|
-
bodyValidator;
|
|
25
|
-
queryValidator;
|
|
26
|
-
scopes = [];
|
|
27
|
-
constructor(method, relativePath = "", tag) {
|
|
28
|
-
super(tag || relativePath || method);
|
|
29
|
-
this.setMinLevel(ServerApi.isDebug ? LogLevel.Verbose : LogLevel.Info);
|
|
30
|
-
this.method = method;
|
|
31
|
-
this.relativePath = `${relativePath}`;
|
|
32
|
-
}
|
|
33
|
-
// The Express RequestHandler form of this endpoint. Pass it straight to
|
|
34
|
-
// your routes file: `v1.post("/register", register.handler)`. Stored on
|
|
35
|
-
// the instance after first access so repeated reads are O(1).
|
|
36
|
-
_handler;
|
|
37
|
-
get handler() {
|
|
38
|
-
if (!this._handler)
|
|
39
|
-
this._handler = (req, res) => this.call(req, res);
|
|
40
|
-
return this._handler;
|
|
41
|
-
}
|
|
42
|
-
shouldPrintResponse() {
|
|
43
|
-
return this.printResponse;
|
|
44
|
-
}
|
|
45
|
-
;
|
|
46
|
-
setMiddlewares(...middlewares) {
|
|
47
|
-
this.middlewares = middlewares;
|
|
48
|
-
return this;
|
|
49
|
-
}
|
|
50
|
-
addMiddlewares(...middlewares) {
|
|
51
|
-
this.middlewares = [...(this.middlewares || []), ...middlewares];
|
|
52
|
-
return this;
|
|
53
|
-
}
|
|
54
|
-
setScopes(...scopes) {
|
|
55
|
-
this.scopes = [...scopes];
|
|
56
|
-
return this;
|
|
57
|
-
}
|
|
58
|
-
getScopes() {
|
|
59
|
-
return this.scopes;
|
|
60
|
-
}
|
|
61
|
-
addHeaderToLog(...headersToLog) {
|
|
62
|
-
this.headersToLog.push(...headersToLog);
|
|
63
|
-
}
|
|
64
|
-
setBodyValidator(bodyValidator) {
|
|
65
|
-
this.bodyValidator = bodyValidator;
|
|
66
|
-
}
|
|
67
|
-
setQueryValidator(queryValidator) {
|
|
68
|
-
this.queryValidator = queryValidator;
|
|
69
|
-
}
|
|
70
|
-
asProxy() {
|
|
71
|
-
return new ServerApi_Proxy(this);
|
|
72
|
-
}
|
|
73
|
-
dontPrintResponse() {
|
|
74
|
-
this.printResponse = false;
|
|
75
|
-
}
|
|
76
|
-
setMaxResponsePrintSize(printResponseMaxSizeBytes) {
|
|
77
|
-
this.printResponse = printResponseMaxSizeBytes > -1;
|
|
78
|
-
}
|
|
79
|
-
assertProperty = assertProperty;
|
|
80
|
-
async call(req, res) {
|
|
81
|
-
const response = new ApiResponse(this, res);
|
|
82
|
-
this.logInfo(`Intercepted Url: ${req.path}`);
|
|
83
|
-
if (this.headersToLog.length > 0) {
|
|
84
|
-
const headers = {};
|
|
85
|
-
for (const headerName of this.headersToLog) {
|
|
86
|
-
headers[headerName] = req.header(headerName);
|
|
87
|
-
}
|
|
88
|
-
this.logDebug(`-- Headers: `, headers);
|
|
89
|
-
}
|
|
90
|
-
const reqQuery = parse(req.url, true).query;
|
|
91
|
-
if (reqQuery && typeof reqQuery === "object" && Object.keys(reqQuery).length)
|
|
92
|
-
this.logVerbose(`-- Url Params: `, reqQuery);
|
|
93
|
-
else
|
|
94
|
-
this.logVerbose(`-- No Params`);
|
|
95
|
-
const body = req.body;
|
|
96
|
-
if (body && ((typeof body === "object")))
|
|
97
|
-
this.logVerbose(`-- Body (Object): `, body);
|
|
98
|
-
else if (body && body.length)
|
|
99
|
-
this.logVerbose(`-- Body (String): `, body);
|
|
100
|
-
else
|
|
101
|
-
this.logVerbose(`-- No Body`);
|
|
102
|
-
const requestData = {
|
|
103
|
-
method: this.method,
|
|
104
|
-
originalUrl: req.path,
|
|
105
|
-
headers: req.headers,
|
|
106
|
-
url: req.url,
|
|
107
|
-
query: reqQuery,
|
|
108
|
-
body: body
|
|
109
|
-
};
|
|
110
|
-
try {
|
|
111
|
-
if (this.bodyValidator)
|
|
112
|
-
validate(body, this.bodyValidator);
|
|
113
|
-
if (this.queryValidator)
|
|
114
|
-
validate(reqQuery, this.queryValidator);
|
|
115
|
-
const context = await this.applyMiddlewares(req, requestData, response, this.scopes);
|
|
116
|
-
const toReturn = await this.process(req, response, reqQuery, body, context);
|
|
117
|
-
if (response.isConsumed())
|
|
118
|
-
return;
|
|
119
|
-
if (!toReturn)
|
|
120
|
-
return await response.end(200);
|
|
121
|
-
// TODO need to handle stream and buffers
|
|
122
|
-
// if (Buffer.isBuffer(toReturn))
|
|
123
|
-
// return response.stream(200, toReturn as Buffer);
|
|
124
|
-
const responseType = typeof toReturn;
|
|
125
|
-
if (responseType === "object")
|
|
126
|
-
return await response.json(200, toReturn);
|
|
127
|
-
if (responseType === "string" && toReturn.toLowerCase().startsWith("<html"))
|
|
128
|
-
return await response.html(200, toReturn);
|
|
129
|
-
return await response.text(200, toReturn);
|
|
130
|
-
}
|
|
131
|
-
catch (err) {
|
|
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);
|
|
138
|
-
if (apiException.responseCode === 500)
|
|
139
|
-
return response.serverError(apiException);
|
|
140
|
-
return response.exception(apiException);
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
async applyMiddlewares(req, requestData, response, scopes) {
|
|
144
|
-
if (!this.middlewares)
|
|
145
|
-
return {};
|
|
146
|
-
const contextList = await Promise.all(this.middlewares.map(async (m) => m(req, requestData, response, scopes)));
|
|
147
|
-
return contextList.reduce((acc, c) => merge(acc, c || {}), {});
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
// ServerApi_Get / ServerApi_Post were dropped — every endpoint now extends
|
|
151
|
-
// ServerApi<Binder> directly and passes its HttpMethod to super().
|
|
152
|
-
export class ServerApi_Proxy extends ServerApi {
|
|
153
|
-
api;
|
|
154
|
-
constructor(api) {
|
|
155
|
-
super(api.method, `${api.relativePath}/proxy`);
|
|
156
|
-
this.api = api;
|
|
157
|
-
this.setMiddlewares(RemoteProxy.Middleware);
|
|
158
|
-
}
|
|
159
|
-
async process(request, response, queryParams, body, context) {
|
|
160
|
-
// @ts-expect-error TS struggles with this dynamic typing
|
|
161
|
-
return this.api.process(request, response, queryParams, body, context);
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
export class ServerApi_Redirect extends ServerApi {
|
|
165
|
-
responseCode;
|
|
166
|
-
redirectUrl;
|
|
167
|
-
constructor(apiName, responseCode, redirectUrl) {
|
|
168
|
-
super(HttpMethod.ALL, apiName);
|
|
169
|
-
this.responseCode = responseCode;
|
|
170
|
-
this.redirectUrl = redirectUrl;
|
|
171
|
-
}
|
|
172
|
-
async process(request, response, queryParams, _body) {
|
|
173
|
-
const query = queryParams ? _keys(queryParams).reduce((c, k) => c + '&' + k + '=' + queryParams[k], '?') : '';
|
|
174
|
-
// v2.0: `redirectUrl` must be either absolute or Express-relative.
|
|
175
|
-
// Pre-v2 the framework prefixed it with HttpServer.config.baseUrl —
|
|
176
|
-
// callers that relied on that should now pass the full URL themselves.
|
|
177
|
-
response.redirect(this.responseCode, `${this.redirectUrl}${query}`);
|
|
178
|
-
}
|
|
179
|
-
}
|
|
8
|
+
const logger = new Logger("ApiResponse");
|
|
9
|
+
// Process-wide debug flag (formerly `ServerApi.isDebug`): gates verbose error
|
|
10
|
+
// output. Set from Storm config (Storm.build); read by HttpServer, the terminal
|
|
11
|
+
// error handler, and ApiResponse's error helpers.
|
|
12
|
+
export const apiDebug = { enabled: false };
|
|
13
|
+
// The `ServerApi` class — and `ServerApi_Get`/`ServerApi_Post`/`ServerApi_Proxy`/
|
|
14
|
+
// `ServerApi_Redirect` — were removed. Endpoints are now `handler(fn)` (see
|
|
15
|
+
// handler.ts; `redirectHandler` for redirects). `ApiResponse` stays as a thin,
|
|
16
|
+
// res-backed response helper: it's the shape legacy `ServerApi_Middleware`s
|
|
17
|
+
// receive, and `headerSink(res)` hands them a real instance.
|
|
180
18
|
export class ApiResponse {
|
|
181
|
-
api;
|
|
182
19
|
res;
|
|
183
20
|
consumed = false;
|
|
184
|
-
constructor(
|
|
185
|
-
this.api = api;
|
|
21
|
+
constructor(res) {
|
|
186
22
|
this.res = res;
|
|
187
23
|
}
|
|
188
24
|
isConsumed() {
|
|
@@ -190,7 +26,7 @@ export class ApiResponse {
|
|
|
190
26
|
}
|
|
191
27
|
consume() {
|
|
192
28
|
if (this.consumed) {
|
|
193
|
-
|
|
29
|
+
logger.logError("This API was already satisfied!!", new Error());
|
|
194
30
|
return;
|
|
195
31
|
}
|
|
196
32
|
this.consumed = true;
|
|
@@ -207,15 +43,13 @@ export class ApiResponse {
|
|
|
207
43
|
}
|
|
208
44
|
printHeaders(headers) {
|
|
209
45
|
if (!headers)
|
|
210
|
-
return
|
|
211
|
-
|
|
46
|
+
return logger.logVerbose(` -- No response headers`);
|
|
47
|
+
logger.logVerbose(` -- Response with headers: `, headers);
|
|
212
48
|
}
|
|
213
49
|
printResponse(response) {
|
|
214
50
|
if (!response)
|
|
215
|
-
return
|
|
216
|
-
|
|
217
|
-
return this.api.logVerbose(` -- Response: -- Not Printing --`);
|
|
218
|
-
this.api.logVerbose(` -- Response:`, response);
|
|
51
|
+
return logger.logVerbose(` -- No response body`);
|
|
52
|
+
logger.logVerbose(` -- Response:`, response);
|
|
219
53
|
}
|
|
220
54
|
code(responseCode, headers) {
|
|
221
55
|
this.printHeaders(headers);
|
|
@@ -262,14 +96,14 @@ export class ApiResponse {
|
|
|
262
96
|
}
|
|
263
97
|
exception(exception, headers) {
|
|
264
98
|
const responseBody = exception.responseBody;
|
|
265
|
-
if (!
|
|
99
|
+
if (!apiDebug.enabled)
|
|
266
100
|
delete responseBody.debugMessage;
|
|
267
101
|
this._json(exception.responseCode, responseBody, headers);
|
|
268
102
|
}
|
|
269
103
|
serverError(error, headers) {
|
|
270
104
|
const stack = error.cause ? error.cause.stack : error.stack;
|
|
271
105
|
const message = (error.cause ? error.cause.message : error.message) || "";
|
|
272
|
-
this.text(500,
|
|
106
|
+
this.text(500, apiDebug.enabled && stack ? stack : message, headers);
|
|
273
107
|
}
|
|
274
108
|
}
|
|
275
109
|
//# sourceMappingURL=server-api.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-api.js","sourceRoot":"","sources":["../../../../src/main/app-backend/modules/server/server-api.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"server-api.js","sourceRoot":"","sources":["../../../../src/main/app-backend/modules/server/server-api.ts"],"names":[],"mappings":"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"}
|
package/dist/backend.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../src/main/backend.ts"],"names":[],"mappings":"AAqBA,cAAc,kDAAkD,CAAC;AACjE,cAAc,4CAA4C,CAAC;AAC3D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,mDAAmD,CAAC;AAClE,cAAc,+CAA+C,CAAC;AAC9D,cAAc,4CAA4C,CAAC;AAC3D,cAAc,4CAA4C,CAAC;AAC3D,cAAc,6CAA6C,CAAC;
|
|
1
|
+
{"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../src/main/backend.ts"],"names":[],"mappings":"AAqBA,cAAc,kDAAkD,CAAC;AACjE,cAAc,4CAA4C,CAAC;AAC3D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,mDAAmD,CAAC;AAClE,cAAc,+CAA+C,CAAC;AAC9D,cAAc,4CAA4C,CAAC;AAC3D,cAAc,4CAA4C,CAAC;AAC3D,cAAc,6CAA6C,CAAC;AAK5D,cAAc,yCAAyC,CAAC;AACxD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,gDAAgD,CAAC;AAI/D,OAAO,sDAAsD,CAAC;AAI9D,OAAO,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAC7C,cAAc,+CAA+C,CAAC;AAC9D,cAAc,qCAAqC,CAAC;AACpD,cAAc,uCAAuC,CAAC;AACtD,cAAc,0CAA0C,CAAC;AACzD,cAAc,sCAAsC,CAAC;AACrD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uCAAuC,CAAC;AACtD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAE5C,cAAc,0CAA0C,CAAC;AACzD,cAAc,oBAAoB,CAAC"}
|
package/dist/backend.js
CHANGED
|
@@ -26,9 +26,10 @@ export * from "./app-backend/modules/server/server-errors.js";
|
|
|
26
26
|
export * from "./app-backend/modules/server/server-api.js";
|
|
27
27
|
export * from "./app-backend/modules/server/HttpServer.js";
|
|
28
28
|
export * from "./app-backend/modules/server/ApiFunction.js";
|
|
29
|
-
// Raw-Express endpoint primitives
|
|
30
|
-
//
|
|
31
|
-
// the shared error
|
|
29
|
+
// Raw-Express endpoint primitives — the endpoint API: a typed `handler()`
|
|
30
|
+
// wrapper (+ `redirectHandler`), composable validate/auth middleware
|
|
31
|
+
// (`validateBody`, `makeRequireAuth`, `useMiddleware`), and the shared error
|
|
32
|
+
// pipeline. (The legacy `ServerApi` class was removed — see ROADMAP #8.)
|
|
32
33
|
export * from "./app-backend/modules/server/handler.js";
|
|
33
34
|
export * from "./app-backend/modules/server/validators.js";
|
|
34
35
|
export * from "./app-backend/modules/server/requireAuth.js";
|
|
@@ -39,7 +40,7 @@ export * from "./app-backend/modules/server/app-middleware.js";
|
|
|
39
40
|
// see it (without this, `req.account` silently degrades to `any`).
|
|
40
41
|
import "./app-backend/modules/server/express-augmentation.js";
|
|
41
42
|
// Re-exported from /shared so endpoint files can write
|
|
42
|
-
// `import {
|
|
43
|
+
// `import {handler, HttpMethod} from "@intuitionrobotics/thunderstorm/backend"`
|
|
43
44
|
// without a second import line.
|
|
44
45
|
export { HttpMethod } from "./shared/types.js";
|
|
45
46
|
export * from "./app-backend/modules/http/AxiosHttpModule.js";
|
|
@@ -52,7 +53,7 @@ export * from "./app-backend/utils/LogClient_File.js";
|
|
|
52
53
|
export * from "./app-backend/utils/file.js";
|
|
53
54
|
export * from "./app-backend/exceptions.js";
|
|
54
55
|
export * from "./app-backend/core/Storm.js";
|
|
55
|
-
// Smart, transparent health endpoint — mount explicitly: `v1.get("/health",
|
|
56
|
+
// Smart, transparent health endpoint — mount explicitly: `v1.get("/health", healthHandler())`.
|
|
56
57
|
export * from "./app-backend/api/v1/utils/health/get.js";
|
|
57
58
|
export * from "./shared/health.js";
|
|
58
59
|
//# sourceMappingURL=backend.js.map
|
package/dist/backend.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backend.js","sourceRoot":"","sources":["../src/main/backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,cAAc,kDAAkD,CAAC;AACjE,cAAc,4CAA4C,CAAC;AAC3D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,mDAAmD,CAAC;AAClE,cAAc,+CAA+C,CAAC;AAC9D,cAAc,4CAA4C,CAAC;AAC3D,cAAc,4CAA4C,CAAC;AAC3D,cAAc,6CAA6C,CAAC;AAC5D
|
|
1
|
+
{"version":3,"file":"backend.js","sourceRoot":"","sources":["../src/main/backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,cAAc,kDAAkD,CAAC;AACjE,cAAc,4CAA4C,CAAC;AAC3D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,mDAAmD,CAAC;AAClE,cAAc,+CAA+C,CAAC;AAC9D,cAAc,4CAA4C,CAAC;AAC3D,cAAc,4CAA4C,CAAC;AAC3D,cAAc,6CAA6C,CAAC;AAC5D,0EAA0E;AAC1E,qEAAqE;AACrE,6EAA6E;AAC7E,yEAAyE;AACzE,cAAc,yCAAyC,CAAC;AACxD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,gDAAgD,CAAC;AAC/D,2EAA2E;AAC3E,6EAA6E;AAC7E,mEAAmE;AACnE,OAAO,sDAAsD,CAAC;AAC9D,uDAAuD;AACvD,gFAAgF;AAChF,gCAAgC;AAChC,OAAO,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAC7C,cAAc,+CAA+C,CAAC;AAC9D,cAAc,qCAAqC,CAAC;AACpD,cAAc,uCAAuC,CAAC;AACtD,cAAc,0CAA0C,CAAC;AACzD,cAAc,sCAAsC,CAAC;AACrD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uCAAuC,CAAC;AACtD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,+FAA+F;AAC/F,cAAc,0CAA0C,CAAC;AACzD,cAAc,oBAAoB,CAAC"}
|