@forklaunch/core 0.14.8 → 0.14.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.
@@ -1698,7 +1698,7 @@ declare function isPortBound(port: number, host?: string): Promise<boolean>;
1698
1698
  declare function createHmacToken({ method, path, body, timestamp, nonce, secretKey }: {
1699
1699
  method: string;
1700
1700
  path: string;
1701
- body: string;
1701
+ body?: unknown;
1702
1702
  timestamp: string;
1703
1703
  nonce: string;
1704
1704
  secretKey: string;
@@ -1698,7 +1698,7 @@ declare function isPortBound(port: number, host?: string): Promise<boolean>;
1698
1698
  declare function createHmacToken({ method, path, body, timestamp, nonce, secretKey }: {
1699
1699
  method: string;
1700
1700
  path: string;
1701
- body: string;
1701
+ body?: unknown;
1702
1702
  timestamp: string;
1703
1703
  nonce: string;
1704
1704
  secretKey: string;
package/lib/http/index.js CHANGED
@@ -102,7 +102,7 @@ function cors(corsOptions) {
102
102
  }
103
103
 
104
104
  // src/http/router/expressLikeRouter.ts
105
- var import_common8 = require("@forklaunch/common");
105
+ var import_common9 = require("@forklaunch/common");
106
106
 
107
107
  // src/http/guards/hasVersionedSchema.ts
108
108
  function hasVersionedSchema(contractDetails) {
@@ -157,12 +157,13 @@ function isTypedHandler(maybeTypedHandler) {
157
157
  }
158
158
 
159
159
  // src/http/middleware/request/auth.middleware.ts
160
- var import_common2 = require("@forklaunch/common");
160
+ var import_common3 = require("@forklaunch/common");
161
161
 
162
162
  // src/http/discriminateAuthMethod.ts
163
163
  var import_jose = require("jose");
164
164
 
165
165
  // src/http/createHmacToken.ts
166
+ var import_common2 = require("@forklaunch/common");
166
167
  var import_crypto = require("crypto");
167
168
  function createHmacToken({
168
169
  method,
@@ -173,10 +174,11 @@ function createHmacToken({
173
174
  secretKey
174
175
  }) {
175
176
  const hmac = (0, import_crypto.createHmac)("sha256", secretKey);
177
+ const bodyString = body ? `${(0, import_common2.safeStringify)(body)}
178
+ ` : void 0;
176
179
  hmac.update(`${method}
177
180
  ${path}
178
- ${body}
179
- ${timestamp}
181
+ ${bodyString}${timestamp}
180
182
  ${nonce}`);
181
183
  return hmac.digest("base64");
182
184
  }
@@ -249,7 +251,15 @@ async function discriminateAuthMethod(auth) {
249
251
  type: "hmac",
250
252
  auth: {
251
253
  secretKeys: auth.hmac.secretKeys,
252
- verificationFunction: async (method, path, body, timestamp, nonce, signature, secretKey) => {
254
+ verificationFunction: async ({
255
+ method,
256
+ path,
257
+ body,
258
+ timestamp,
259
+ nonce,
260
+ signature,
261
+ secretKey
262
+ }) => {
253
263
  return createHmacToken({
254
264
  method,
255
265
  path,
@@ -362,15 +372,15 @@ async function checkAuthorizationToken(authorizationMethod, globalOptions, autho
362
372
  if (!parsedKeyId || !parsedTimestamp || !parsedNonce || !parsedSignature) {
363
373
  return invalidAuthorizationTokenFormat;
364
374
  }
365
- const verificationResult = await auth.verificationFunction(
366
- req?.method ?? "",
367
- req?.path ?? "",
368
- JSON.stringify(req?.body ?? ""),
369
- parsedTimestamp,
370
- parsedNonce,
371
- parsedSignature,
372
- collapsedAuthorizationMethod.hmac.secretKeys[parsedKeyId]
373
- );
375
+ const verificationResult = await auth.verificationFunction({
376
+ method: req?.method ?? "",
377
+ path: req?.path ?? "",
378
+ body: req?.body,
379
+ timestamp: parsedTimestamp,
380
+ nonce: parsedNonce,
381
+ signature: parsedSignature,
382
+ secretKey: collapsedAuthorizationMethod.hmac.secretKeys[parsedKeyId]
383
+ });
374
384
  if (!verificationResult) {
375
385
  return invalidAuthorizationSignature;
376
386
  }
@@ -416,7 +426,7 @@ async function checkAuthorizationToken(authorizationMethod, globalOptions, autho
416
426
  break;
417
427
  }
418
428
  default:
419
- (0, import_common2.isNever)(type);
429
+ (0, import_common3.isNever)(type);
420
430
  return [401, "Invalid Authorization method."];
421
431
  }
422
432
  if (isHmacMethod(collapsedAuthorizationMethod) && resourceId == null) {
@@ -503,7 +513,7 @@ async function parseRequestAuth(req, res, next) {
503
513
  }
504
514
 
505
515
  // src/http/middleware/request/createContext.middleware.ts
506
- var import_common3 = require("@forklaunch/common");
516
+ var import_common4 = require("@forklaunch/common");
507
517
  var import_api = require("@opentelemetry/api");
508
518
  var import_uuid = require("uuid");
509
519
 
@@ -530,7 +540,7 @@ function createContext(schemaValidator) {
530
540
  req.context.span?.setAttribute(ATTR_CORRELATION_ID, correlationId);
531
541
  req.context.span?.setAttribute(
532
542
  import_semantic_conventions.ATTR_SERVICE_NAME,
533
- (0, import_common3.getEnvVar)("OTEL_SERVICE_NAME")
543
+ (0, import_common4.getEnvVar)("OTEL_SERVICE_NAME")
534
544
  );
535
545
  }
536
546
  next?.();
@@ -538,10 +548,10 @@ function createContext(schemaValidator) {
538
548
  }
539
549
 
540
550
  // src/http/middleware/request/enrichDetails.middleware.ts
541
- var import_common6 = require("@forklaunch/common");
551
+ var import_common7 = require("@forklaunch/common");
542
552
 
543
553
  // src/http/telemetry/openTelemetryCollector.ts
544
- var import_common5 = require("@forklaunch/common");
554
+ var import_common6 = require("@forklaunch/common");
545
555
  var import_opentelemetry_instrumentation_hyper_express = require("@forklaunch/opentelemetry-instrumentation-hyper-express");
546
556
  var import_api3 = require("@opentelemetry/api");
547
557
  var import_exporter_logs_otlp_http = require("@opentelemetry/exporter-logs-otlp-http");
@@ -562,7 +572,7 @@ function isForklaunchRequest(request) {
562
572
  }
563
573
 
564
574
  // src/http/telemetry/pinoLogger.ts
565
- var import_common4 = require("@forklaunch/common");
575
+ var import_common5 = require("@forklaunch/common");
566
576
  var import_api2 = require("@opentelemetry/api");
567
577
  var import_api_logs = require("@opentelemetry/api-logs");
568
578
  var import_pino = __toESM(require("pino"));
@@ -594,7 +604,7 @@ function mapSeverity(level) {
594
604
  case "fatal":
595
605
  return 21;
596
606
  default:
597
- (0, import_common4.isNever)(level);
607
+ (0, import_common5.isNever)(level);
598
608
  return 0;
599
609
  }
600
610
  }
@@ -787,24 +797,24 @@ var OpenTelemetryCollector = class {
787
797
  return this.metrics[metricId];
788
798
  }
789
799
  };
790
- import_dotenv.default.config({ path: (0, import_common5.getEnvVar)("DOTENV_FILE_PATH") });
800
+ import_dotenv.default.config({ path: (0, import_common6.getEnvVar)("DOTENV_FILE_PATH") });
791
801
  new import_sdk_node.NodeSDK({
792
802
  resource: (0, import_resources.resourceFromAttributes)({
793
- [import_semantic_conventions2.ATTR_SERVICE_NAME]: (0, import_common5.getEnvVar)("OTEL_SERVICE_NAME")
803
+ [import_semantic_conventions2.ATTR_SERVICE_NAME]: (0, import_common6.getEnvVar)("OTEL_SERVICE_NAME")
794
804
  }),
795
805
  traceExporter: new import_exporter_trace_otlp_http.OTLPTraceExporter({
796
- url: `${(0, import_common5.getEnvVar)("OTEL_EXPORTER_OTLP_ENDPOINT") ?? "http://localhost:4318"}/v1/traces`
806
+ url: `${(0, import_common6.getEnvVar)("OTEL_EXPORTER_OTLP_ENDPOINT") ?? "http://localhost:4318"}/v1/traces`
797
807
  }),
798
808
  metricReader: new import_sdk_metrics.PeriodicExportingMetricReader({
799
809
  exporter: new import_exporter_metrics_otlp_http.OTLPMetricExporter({
800
- url: `${(0, import_common5.getEnvVar)("OTEL_EXPORTER_OTLP_ENDPOINT") ?? "http://localhost:4318"}/v1/metrics`
810
+ url: `${(0, import_common6.getEnvVar)("OTEL_EXPORTER_OTLP_ENDPOINT") ?? "http://localhost:4318"}/v1/metrics`
801
811
  }),
802
812
  exportIntervalMillis: 5e3
803
813
  }),
804
814
  logRecordProcessors: [
805
815
  new import_sdk_logs.BatchLogRecordProcessor(
806
816
  new import_exporter_logs_otlp_http.OTLPLogExporter({
807
- url: `${(0, import_common5.getEnvVar)("OTEL_EXPORTER_OTLP_ENDPOINT") ?? "http://localhost:4318"}/v1/logs`
817
+ url: `${(0, import_common6.getEnvVar)("OTEL_EXPORTER_OTLP_ENDPOINT") ?? "http://localhost:4318"}/v1/logs`
808
818
  })
809
819
  )
810
820
  ],
@@ -813,7 +823,7 @@ new import_sdk_node.NodeSDK({
813
823
  applyCustomAttributesOnSpan: (span, request) => {
814
824
  span.setAttribute(
815
825
  import_semantic_conventions2.ATTR_SERVICE_NAME,
816
- (0, import_common5.getEnvVar)("OTEL_SERVICE_NAME") ?? "unknown"
826
+ (0, import_common6.getEnvVar)("OTEL_SERVICE_NAME") ?? "unknown"
817
827
  );
818
828
  if (isForklaunchRequest(request)) {
819
829
  span.setAttribute(ATTR_API_NAME, request.contractDetails?.name);
@@ -825,10 +835,10 @@ new import_sdk_node.NodeSDK({
825
835
  new import_opentelemetry_instrumentation_hyper_express.HyperExpressInstrumentation()
826
836
  ]
827
837
  }).start();
828
- var httpRequestsTotalCounter = import_api3.metrics.getMeter((0, import_common5.getEnvVar)("OTEL_SERVICE_NAME") || "unknown").createCounter("http_requests_total", {
838
+ var httpRequestsTotalCounter = import_api3.metrics.getMeter((0, import_common6.getEnvVar)("OTEL_SERVICE_NAME") || "unknown").createCounter("http_requests_total", {
829
839
  description: "Number of HTTP requests"
830
840
  });
831
- var httpServerDurationHistogram = import_api3.metrics.getMeter((0, import_common5.getEnvVar)("OTEL_SERVICE_NAME") || "unknown").createHistogram("http_server_duration", {
841
+ var httpServerDurationHistogram = import_api3.metrics.getMeter((0, import_common6.getEnvVar)("OTEL_SERVICE_NAME") || "unknown").createHistogram("http_server_duration", {
832
842
  description: "Duration of HTTP server requests",
833
843
  unit: "s"
834
844
  });
@@ -848,7 +858,7 @@ function enrichDetails(path, contractDetails, requestSchema, responseSchemas, op
848
858
  const [seconds, nanoseconds] = process.hrtime(startTime);
849
859
  const durationMs = seconds + nanoseconds / 1e9;
850
860
  httpServerDurationHistogram.record(durationMs, {
851
- [import_semantic_conventions.ATTR_SERVICE_NAME]: (0, import_common6.getEnvVar)("OTEL_SERVICE_NAME") || "unknown",
861
+ [import_semantic_conventions.ATTR_SERVICE_NAME]: (0, import_common7.getEnvVar)("OTEL_SERVICE_NAME") || "unknown",
852
862
  [ATTR_API_NAME]: req.contractDetails?.name || "unknown",
853
863
  [import_semantic_conventions.ATTR_HTTP_REQUEST_METHOD]: req.method,
854
864
  [import_semantic_conventions.ATTR_HTTP_ROUTE]: req.originalPath || "unknown",
@@ -860,7 +870,7 @@ function enrichDetails(path, contractDetails, requestSchema, responseSchemas, op
860
870
  }
861
871
 
862
872
  // src/http/middleware/request/parse.middleware.ts
863
- var import_common7 = require("@forklaunch/common");
873
+ var import_common8 = require("@forklaunch/common");
864
874
  var import_validator = require("@forklaunch/validator");
865
875
 
866
876
  // src/http/guards/hasSend.ts
@@ -888,7 +898,7 @@ function parse(req, res, next) {
888
898
  let parsedRequest;
889
899
  let collectedParseErrors;
890
900
  if (req.contractDetails.versions) {
891
- if ((0, import_common7.isRecord)(req.requestSchema)) {
901
+ if ((0, import_common8.isRecord)(req.requestSchema)) {
892
902
  let runningParseErrors = "";
893
903
  matchedVersions = [];
894
904
  Object.entries(req.requestSchema).forEach(([version, schema]) => {
@@ -1280,13 +1290,13 @@ var ForklaunchExpressLikeRouter = class _ForklaunchExpressLikeRouter {
1280
1290
  versionedContractDetails,
1281
1291
  contractDetails.params
1282
1292
  );
1283
- if ((0, import_common8.isRecord)(requestSchema)) {
1293
+ if ((0, import_common9.isRecord)(requestSchema)) {
1284
1294
  requestSchema = {
1285
1295
  ...requestSchema,
1286
1296
  [version]: versionedRequestSchema
1287
1297
  };
1288
1298
  }
1289
- if ((0, import_common8.isRecord)(responseSchemas)) {
1299
+ if ((0, import_common9.isRecord)(responseSchemas)) {
1290
1300
  responseSchemas = {
1291
1301
  ...responseSchemas,
1292
1302
  [version]: versionedResponseSchemas
@@ -1475,8 +1485,8 @@ var ForklaunchExpressLikeRouter = class _ForklaunchExpressLikeRouter {
1475
1485
  ...resolvedMiddlewares,
1476
1486
  this.#parseAndRunControllerHandler(controllerHandler)
1477
1487
  );
1478
- (0, import_common8.toRecord)(this._fetchMap)[(0, import_common8.sanitizePathSlashes)(`${this.basePath}${path}`)] = {
1479
- ...this._fetchMap[(0, import_common8.sanitizePathSlashes)(`${this.basePath}${path}`)] ?? {},
1488
+ (0, import_common9.toRecord)(this._fetchMap)[(0, import_common9.sanitizePathSlashes)(`${this.basePath}${path}`)] = {
1489
+ ...this._fetchMap[(0, import_common9.sanitizePathSlashes)(`${this.basePath}${path}`)] ?? {},
1480
1490
  [method.toUpperCase()]: contractDetails.versions ? Object.fromEntries(
1481
1491
  Object.keys(contractDetails.versions).map((version) => [
1482
1492
  version,
@@ -1484,7 +1494,7 @@ var ForklaunchExpressLikeRouter = class _ForklaunchExpressLikeRouter {
1484
1494
  ])
1485
1495
  ) : this.#localParamRequest(handlers, controllerHandler)
1486
1496
  };
1487
- (0, import_common8.toRecord)(this.sdk)[(0, import_common8.toPrettyCamelCase)(contractDetails.name)] = contractDetails.versions ? Object.fromEntries(
1497
+ (0, import_common9.toRecord)(this.sdk)[(0, import_common9.toPrettyCamelCase)(contractDetails.name)] = contractDetails.versions ? Object.fromEntries(
1488
1498
  Object.keys(contractDetails.versions).map((version) => [
1489
1499
  version,
1490
1500
  (req) => this.#localParamRequest(
@@ -1583,10 +1593,10 @@ var ForklaunchExpressLikeRouter = class _ForklaunchExpressLikeRouter {
1583
1593
  }
1584
1594
  addRouterToSdk(router) {
1585
1595
  Object.entries(router._fetchMap).map(
1586
- ([key, value]) => (0, import_common8.toRecord)(this._fetchMap)[(0, import_common8.sanitizePathSlashes)(`${this.basePath}${key}`)] = value
1596
+ ([key, value]) => (0, import_common9.toRecord)(this._fetchMap)[(0, import_common9.sanitizePathSlashes)(`${this.basePath}${key}`)] = value
1587
1597
  );
1588
- const existingSdk = this.sdk[router.sdkName ?? (0, import_common8.toPrettyCamelCase)(router.basePath)];
1589
- (0, import_common8.toRecord)(this.sdk)[router.sdkName ?? (0, import_common8.toPrettyCamelCase)(router.basePath)] = {
1598
+ const existingSdk = this.sdk[router.sdkName ?? (0, import_common9.toPrettyCamelCase)(router.basePath)];
1599
+ (0, import_common9.toRecord)(this.sdk)[router.sdkName ?? (0, import_common9.toPrettyCamelCase)(router.basePath)] = {
1590
1600
  ...typeof existingSdk === "object" ? existingSdk : {},
1591
1601
  ...router.sdk
1592
1602
  };
@@ -2985,7 +2995,7 @@ var getCodeForStatus = (status) => {
2985
2995
  var httpStatusCodes_default = HTTPStatuses;
2986
2996
 
2987
2997
  // src/http/mcpGenerator/mcpGenerator.ts
2988
- var import_common9 = require("@forklaunch/common");
2998
+ var import_common10 = require("@forklaunch/common");
2989
2999
  var import_fastmcp_fork = require("@forklaunch/fastmcp-fork");
2990
3000
  var import_zod = require("@forklaunch/validator/zod");
2991
3001
 
@@ -3122,7 +3132,7 @@ function generateMcpServer(schemaValidator, protocol, host, port, version, appli
3122
3132
  if (discriminatedBody) {
3123
3133
  switch (discriminatedBody.parserType) {
3124
3134
  case "json": {
3125
- parsedBody = (0, import_common9.safeStringify)(body);
3135
+ parsedBody = (0, import_common10.safeStringify)(body);
3126
3136
  break;
3127
3137
  }
3128
3138
  case "text": {
@@ -3135,7 +3145,7 @@ function generateMcpServer(schemaValidator, protocol, host, port, version, appli
3135
3145
  }
3136
3146
  case "multipart": {
3137
3147
  const formData = new FormData();
3138
- if ((0, import_common9.isRecord)(body)) {
3148
+ if ((0, import_common10.isRecord)(body)) {
3139
3149
  for (const key in body) {
3140
3150
  if (typeof body[key] === "string" || body[key] instanceof Blob) {
3141
3151
  formData.append(key, body[key]);
@@ -3150,11 +3160,11 @@ function generateMcpServer(schemaValidator, protocol, host, port, version, appli
3150
3160
  break;
3151
3161
  }
3152
3162
  case "urlEncoded": {
3153
- if ((0, import_common9.isRecord)(body)) {
3163
+ if ((0, import_common10.isRecord)(body)) {
3154
3164
  parsedBody = new URLSearchParams(
3155
3165
  Object.entries(body).map(([key, value]) => [
3156
3166
  key,
3157
- (0, import_common9.safeStringify)(value)
3167
+ (0, import_common10.safeStringify)(value)
3158
3168
  ])
3159
3169
  );
3160
3170
  } else {
@@ -3163,8 +3173,8 @@ function generateMcpServer(schemaValidator, protocol, host, port, version, appli
3163
3173
  break;
3164
3174
  }
3165
3175
  default: {
3166
- (0, import_common9.isNever)(discriminatedBody.parserType);
3167
- parsedBody = (0, import_common9.safeStringify)(body);
3176
+ (0, import_common10.isNever)(discriminatedBody.parserType);
3177
+ parsedBody = (0, import_common10.safeStringify)(body);
3168
3178
  break;
3169
3179
  }
3170
3180
  }
@@ -3173,7 +3183,7 @@ function generateMcpServer(schemaValidator, protocol, host, port, version, appli
3173
3183
  const queryString = new URLSearchParams(
3174
3184
  Object.entries(query).map(([key, value]) => [
3175
3185
  key,
3176
- (0, import_common9.safeStringify)(value)
3186
+ (0, import_common10.safeStringify)(value)
3177
3187
  ])
3178
3188
  ).toString();
3179
3189
  url += queryString ? `?${queryString}` : "";
@@ -3206,7 +3216,7 @@ function generateMcpServer(schemaValidator, protocol, host, port, version, appli
3206
3216
  content: [
3207
3217
  {
3208
3218
  type: "text",
3209
- text: (0, import_common9.safeStringify)(await response.json())
3219
+ text: (0, import_common10.safeStringify)(await response.json())
3210
3220
  }
3211
3221
  ]
3212
3222
  };
@@ -3360,18 +3370,18 @@ ${parseErrors.join("\n\n")}`
3360
3370
  }
3361
3371
 
3362
3372
  // src/http/middleware/response/enrichExpressLikeSend.middleware.ts
3363
- var import_common11 = require("@forklaunch/common");
3373
+ var import_common12 = require("@forklaunch/common");
3364
3374
  var import_stream = require("stream");
3365
3375
 
3366
3376
  // src/http/telemetry/recordMetric.ts
3367
- var import_common10 = require("@forklaunch/common");
3377
+ var import_common11 = require("@forklaunch/common");
3368
3378
  var import_semantic_conventions3 = require("@opentelemetry/semantic-conventions");
3369
3379
  function recordMetric(req, res) {
3370
3380
  if (res.metricRecorded) {
3371
3381
  return;
3372
3382
  }
3373
3383
  httpRequestsTotalCounter.add(1, {
3374
- [import_semantic_conventions3.ATTR_SERVICE_NAME]: (0, import_common10.getEnvVar)("OTEL_SERVICE_NAME"),
3384
+ [import_semantic_conventions3.ATTR_SERVICE_NAME]: (0, import_common11.getEnvVar)("OTEL_SERVICE_NAME"),
3375
3385
  [ATTR_API_NAME]: req.contractDetails?.name,
3376
3386
  [import_semantic_conventions3.ATTR_HTTP_REQUEST_METHOD]: req.method,
3377
3387
  [import_semantic_conventions3.ATTR_HTTP_ROUTE]: req.originalPath,
@@ -3420,8 +3430,8 @@ function enrichExpressLikeSend(instance, req, res, originalOperation, originalSe
3420
3430
  `attachment; filename="${data.name}"`
3421
3431
  );
3422
3432
  }
3423
- if ((0, import_common11.isNodeJsWriteableStream)(res)) {
3424
- import_stream.Readable.from((0, import_common11.readableStreamToAsyncIterable)(data.stream())).pipe(
3433
+ if ((0, import_common12.isNodeJsWriteableStream)(res)) {
3434
+ import_stream.Readable.from((0, import_common12.readableStreamToAsyncIterable)(data.stream())).pipe(
3425
3435
  res
3426
3436
  );
3427
3437
  } else {
@@ -3430,7 +3440,7 @@ function enrichExpressLikeSend(instance, req, res, originalOperation, originalSe
3430
3440
  originalSend.call(instance, "Not a NodeJS WritableStream");
3431
3441
  errorSent = true;
3432
3442
  }
3433
- } else if ((0, import_common11.isAsyncGenerator)(data)) {
3443
+ } else if ((0, import_common12.isAsyncGenerator)(data)) {
3434
3444
  let firstPass = true;
3435
3445
  const transformer = new import_stream.Transform({
3436
3446
  objectMode: true,
@@ -3458,7 +3468,7 @@ ${res.locals.errorMessage}`;
3458
3468
  if (!errorSent) {
3459
3469
  let data2 = "";
3460
3470
  for (const [key, value] of Object.entries(chunk)) {
3461
- data2 += `${key}: ${typeof value === "string" ? value : (0, import_common11.safeStringify)(value)}
3471
+ data2 += `${key}: ${typeof value === "string" ? value : (0, import_common12.safeStringify)(value)}
3462
3472
  `;
3463
3473
  }
3464
3474
  data2 += "\n";
@@ -3466,7 +3476,7 @@ ${res.locals.errorMessage}`;
3466
3476
  }
3467
3477
  }
3468
3478
  });
3469
- if ((0, import_common11.isNodeJsWriteableStream)(res)) {
3479
+ if ((0, import_common12.isNodeJsWriteableStream)(res)) {
3470
3480
  import_stream.Readable.from(data).pipe(transformer).pipe(res);
3471
3481
  } else {
3472
3482
  res.type("text/plain");
@@ -3477,7 +3487,7 @@ ${res.locals.errorMessage}`;
3477
3487
  } else {
3478
3488
  const parserType = responseBodies?.[Number(res.statusCode)]?.parserType;
3479
3489
  res.bodyData = data;
3480
- if ((0, import_common11.isRecord)(data)) {
3490
+ if ((0, import_common12.isRecord)(data)) {
3481
3491
  switch (parserType) {
3482
3492
  case "json":
3483
3493
  res.bodyData = "json" in data ? data.json : data;
@@ -3498,7 +3508,7 @@ ${res.locals.errorMessage}`;
3498
3508
  res.bodyData = data;
3499
3509
  break;
3500
3510
  default:
3501
- (0, import_common11.isNever)(parserType);
3511
+ (0, import_common12.isNever)(parserType);
3502
3512
  res.bodyData = data;
3503
3513
  break;
3504
3514
  }
@@ -3534,7 +3544,7 @@ ${res.locals.errorMessage}`;
3534
3544
  }
3535
3545
 
3536
3546
  // src/http/openApiV3Generator/openApiV3Generator.ts
3537
- var import_common12 = require("@forklaunch/common");
3547
+ var import_common13 = require("@forklaunch/common");
3538
3548
  var OPENAPI_DEFAULT_VERSION = Symbol("default");
3539
3549
  function toUpperCase(str) {
3540
3550
  return str.charAt(0).toUpperCase() + str.slice(1);
@@ -3757,7 +3767,7 @@ function generateOpenApiSpecs(schemaValidator, serverUrls, serverDescriptions, a
3757
3767
  ].forEach(({ fullPath, router }) => {
3758
3768
  const controllerName = transformBasePath(fullPath);
3759
3769
  router.routes.forEach((route) => {
3760
- const openApiPath = (0, import_common12.openApiCompliantPath)(
3770
+ const openApiPath = (0, import_common13.openApiCompliantPath)(
3761
3771
  `${fullPath}${route.path === "/" ? "" : route.path}`
3762
3772
  );
3763
3773
  const { name, summary, params, versions, auth, options: options2 } = route.contractDetails;
@@ -3862,7 +3872,7 @@ function generateOpenApiSpecs(schemaValidator, serverUrls, serverDescriptions, a
3862
3872
  }
3863
3873
 
3864
3874
  // src/http/sdk/sdkClient.ts
3865
- var import_common13 = require("@forklaunch/common");
3875
+ var import_common14 = require("@forklaunch/common");
3866
3876
 
3867
3877
  // src/http/guards/isSdkRouter.ts
3868
3878
  function isSdkRouter(value) {
@@ -3874,12 +3884,12 @@ function mapToSdk(schemaValidator, routerMap, runningPath = void 0) {
3874
3884
  const routerUniquenessCache = /* @__PURE__ */ new Set();
3875
3885
  return Object.fromEntries(
3876
3886
  Object.entries(routerMap).map(([key, value]) => {
3877
- if (routerUniquenessCache.has((0, import_common13.hashString)((0, import_common13.safeStringify)(value)))) {
3887
+ if (routerUniquenessCache.has((0, import_common14.hashString)((0, import_common14.safeStringify)(value)))) {
3878
3888
  throw new Error(
3879
3889
  `SdkClient: Cannot use the same router pointer twice. Please clone the duplicate router with .clone() or only use the router once.`
3880
3890
  );
3881
3891
  }
3882
- routerUniquenessCache.add((0, import_common13.hashString)((0, import_common13.safeStringify)(value)));
3892
+ routerUniquenessCache.add((0, import_common14.hashString)((0, import_common14.safeStringify)(value)));
3883
3893
  const currentPath = runningPath ? [runningPath, key].join(".") : key;
3884
3894
  if (isSdkRouter(value)) {
3885
3895
  Object.entries(value.sdkPaths).forEach(([routePath, sdkKey]) => {
@@ -3928,7 +3938,7 @@ function mapToFetch(schemaValidator, routerMap) {
3928
3938
  return ((path, ...reqInit) => {
3929
3939
  const method = reqInit[0]?.method;
3930
3940
  const version = reqInit[0] != null && "version" in reqInit[0] ? reqInit[0].version : void 0;
3931
- return (version ? (0, import_common13.toRecord)((0, import_common13.toRecord)(flattenedFetchMap[path])[method ?? "GET"])[version] : (0, import_common13.toRecord)(flattenedFetchMap[path])[method ?? "GET"])(path, reqInit[0]);
3941
+ return (version ? (0, import_common14.toRecord)((0, import_common14.toRecord)(flattenedFetchMap[path])[method ?? "GET"])[version] : (0, import_common14.toRecord)(flattenedFetchMap[path])[method ?? "GET"])(path, reqInit[0]);
3932
3942
  });
3933
3943
  }
3934
3944
  function sdkClient(schemaValidator, routerMap) {
@@ -3940,7 +3950,7 @@ function sdkClient(schemaValidator, routerMap) {
3940
3950
  }
3941
3951
 
3942
3952
  // src/http/sdk/sdkRouter.ts
3943
- var import_common14 = require("@forklaunch/common");
3953
+ var import_common15 = require("@forklaunch/common");
3944
3954
  function sdkRouter(schemaValidator, controller, router) {
3945
3955
  const controllerSdkPaths = [];
3946
3956
  const mappedSdk = Object.fromEntries(
@@ -3950,7 +3960,7 @@ function sdkRouter(schemaValidator, controller, router) {
3950
3960
  router.sdkPaths[sdkPath] = key;
3951
3961
  return [
3952
3962
  key,
3953
- router.sdk[(0, import_common14.toPrettyCamelCase)(value.contractDetails.name)]
3963
+ router.sdk[(0, import_common15.toPrettyCamelCase)(value.contractDetails.name)]
3954
3964
  ];
3955
3965
  })
3956
3966
  );