@forklaunch/core 0.8.7 → 0.8.9
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/lib/src/http/index.d.mts +13 -1
- package/lib/src/http/index.d.ts +13 -1
- package/lib/src/http/index.js +55 -37
- package/lib/src/http/index.js.map +1 -1
- package/lib/src/http/index.mjs +41 -25
- package/lib/src/http/index.mjs.map +1 -1
- package/lib/src/services/index.d.mts +2 -2
- package/lib/src/services/index.d.ts +2 -2
- package/lib/src/services/index.js +6 -6
- package/lib/src/services/index.js.map +1 -1
- package/lib/src/services/index.mjs +6 -6
- package/lib/src/services/index.mjs.map +1 -1
- package/package.json +19 -19
- package/lib/src/persistence/index.d.mts +0 -120
- package/lib/src/persistence/index.d.ts +0 -120
- package/lib/src/persistence/index.js +0 -152
- package/lib/src/persistence/index.js.map +0 -1
- package/lib/src/persistence/index.mjs +0 -127
- package/lib/src/persistence/index.mjs.map +0 -1
package/lib/src/http/index.mjs
CHANGED
@@ -1,11 +1,18 @@
|
|
1
1
|
// src/http/middleware/request/cors.middleware.ts
|
2
2
|
import corsMiddleware from "cors";
|
3
|
-
function cors(
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
3
|
+
function cors(corsOptions) {
|
4
|
+
return (req, res, next) => {
|
5
|
+
if (req.method === "OPTIONS") {
|
6
|
+
res.cors = true;
|
7
|
+
}
|
8
|
+
if (!res.getHeader) {
|
9
|
+
res.getHeader = (key) => {
|
10
|
+
return res.getHeaders()[key];
|
11
|
+
};
|
12
|
+
}
|
13
|
+
corsMiddleware(corsOptions)(req, res, next ?? (() => {
|
14
|
+
}));
|
15
|
+
};
|
9
16
|
}
|
10
17
|
|
11
18
|
// src/http/middleware/request/createContext.middleware.ts
|
@@ -218,13 +225,11 @@ async function parseRequestAuth(req, res, next) {
|
|
218
225
|
next?.();
|
219
226
|
}
|
220
227
|
|
221
|
-
// src/
|
222
|
-
|
223
|
-
const value = process.env[name];
|
224
|
-
return value;
|
225
|
-
}
|
228
|
+
// src/http/middleware/request/enrichDetails.middleware.ts
|
229
|
+
import { getEnvVar as getEnvVar2 } from "@forklaunch/common";
|
226
230
|
|
227
231
|
// src/http/telemetry/openTelemetryCollector.ts
|
232
|
+
import { getEnvVar } from "@forklaunch/common";
|
228
233
|
import { HyperExpressInstrumentation } from "@forklaunch/opentelemetry-instrumentation-hyper-express";
|
229
234
|
import {
|
230
235
|
metrics
|
@@ -481,7 +486,7 @@ function enrichDetails(path, contractDetails, requestSchema, responseSchemas, op
|
|
481
486
|
const [seconds, nanoseconds] = process.hrtime(startTime);
|
482
487
|
const durationMs = seconds + nanoseconds / 1e9;
|
483
488
|
httpServerDurationHistogram.record(durationMs, {
|
484
|
-
[ATTR_SERVICE_NAME]:
|
489
|
+
[ATTR_SERVICE_NAME]: getEnvVar2("OTEL_SERVICE_NAME") || "unknown",
|
485
490
|
[ATTR_API_NAME]: req.contractDetails?.name || "unknown",
|
486
491
|
[ATTR_HTTP_REQUEST_METHOD]: req.method,
|
487
492
|
[ATTR_HTTP_ROUTE]: req.originalPath || "unknown",
|
@@ -1301,7 +1306,7 @@ var ForklaunchExpressLikeApplication = class extends ForklaunchExpressLikeRouter
|
|
1301
1306
|
*
|
1302
1307
|
* @param {SV} schemaValidator - The schema validator.
|
1303
1308
|
*/
|
1304
|
-
constructor(schemaValidator, internal, postEnrichMiddleware, openTelemetryCollector) {
|
1309
|
+
constructor(schemaValidator, internal, postEnrichMiddleware, openTelemetryCollector, appOptions) {
|
1305
1310
|
super(
|
1306
1311
|
"/",
|
1307
1312
|
schemaValidator,
|
@@ -1313,8 +1318,26 @@ var ForklaunchExpressLikeApplication = class extends ForklaunchExpressLikeRouter
|
|
1313
1318
|
this.internal = internal;
|
1314
1319
|
this.postEnrichMiddleware = postEnrichMiddleware;
|
1315
1320
|
this.openTelemetryCollector = openTelemetryCollector;
|
1321
|
+
this.appOptions = appOptions;
|
1322
|
+
process.on("uncaughtException", (err) => {
|
1323
|
+
this.openTelemetryCollector.log("error", "Uncaught exception", { err });
|
1324
|
+
process.exit(1);
|
1325
|
+
});
|
1326
|
+
process.on("unhandledRejection", (reason) => {
|
1327
|
+
this.openTelemetryCollector.log("error", "Unhandled rejection", {
|
1328
|
+
reason
|
1329
|
+
});
|
1330
|
+
process.exit(1);
|
1331
|
+
});
|
1332
|
+
process.on("exit", () => {
|
1333
|
+
this.openTelemetryCollector.log("info", "Shutting down application");
|
1334
|
+
});
|
1335
|
+
process.on("SIGINT", () => {
|
1336
|
+
this.openTelemetryCollector.log("info", "Shutting down application");
|
1337
|
+
process.exit(0);
|
1338
|
+
});
|
1316
1339
|
this.internal.use(createContext(this.schemaValidator));
|
1317
|
-
this.internal.use(cors);
|
1340
|
+
this.internal.use(cors(this.appOptions?.cors ?? {}));
|
1318
1341
|
}
|
1319
1342
|
};
|
1320
1343
|
|
@@ -2444,7 +2467,7 @@ ${parseErrors.join("\n\n")}`
|
|
2444
2467
|
// src/http/middleware/response/enrichExpressLikeSend.middleware.ts
|
2445
2468
|
import {
|
2446
2469
|
isAsyncGenerator,
|
2447
|
-
isNever as
|
2470
|
+
isNever as isNever2,
|
2448
2471
|
isNodeJsWriteableStream,
|
2449
2472
|
isRecord,
|
2450
2473
|
readableStreamToAsyncIterable,
|
@@ -2453,26 +2476,19 @@ import {
|
|
2453
2476
|
import { Readable, Transform } from "stream";
|
2454
2477
|
|
2455
2478
|
// src/http/telemetry/recordMetric.ts
|
2479
|
+
import { getEnvVar as getEnvVar3 } from "@forklaunch/common";
|
2456
2480
|
import {
|
2457
2481
|
ATTR_HTTP_REQUEST_METHOD as ATTR_HTTP_REQUEST_METHOD3,
|
2458
2482
|
ATTR_HTTP_RESPONSE_STATUS_CODE as ATTR_HTTP_RESPONSE_STATUS_CODE3,
|
2459
2483
|
ATTR_HTTP_ROUTE as ATTR_HTTP_ROUTE3,
|
2460
2484
|
ATTR_SERVICE_NAME as ATTR_SERVICE_NAME3
|
2461
2485
|
} from "@opentelemetry/semantic-conventions";
|
2462
|
-
|
2463
|
-
// src/services/configInjector.ts
|
2464
|
-
import { extractArgumentNames as extractArgumentNames2, isNever as isNever2 } from "@forklaunch/common";
|
2465
|
-
import {
|
2466
|
-
prettyPrintParseErrors as prettyPrintParseErrors3
|
2467
|
-
} from "@forklaunch/validator";
|
2468
|
-
|
2469
|
-
// src/http/telemetry/recordMetric.ts
|
2470
2486
|
function recordMetric(req, res) {
|
2471
2487
|
if (res.metricRecorded) {
|
2472
2488
|
return;
|
2473
2489
|
}
|
2474
2490
|
httpRequestsTotalCounter.add(1, {
|
2475
|
-
[ATTR_SERVICE_NAME3]:
|
2491
|
+
[ATTR_SERVICE_NAME3]: getEnvVar3("OTEL_SERVICE_NAME"),
|
2476
2492
|
[ATTR_API_NAME]: req.contractDetails?.name,
|
2477
2493
|
[ATTR_CORRELATION_ID]: req.context.correlationId,
|
2478
2494
|
[ATTR_HTTP_REQUEST_METHOD3]: req.method,
|
@@ -2588,7 +2604,7 @@ ${res.locals.errorMessage}`;
|
|
2588
2604
|
res.bodyData = data;
|
2589
2605
|
break;
|
2590
2606
|
default:
|
2591
|
-
|
2607
|
+
isNever2(parserType);
|
2592
2608
|
res.bodyData = data;
|
2593
2609
|
break;
|
2594
2610
|
}
|