@forklaunch/core 0.17.0 → 0.17.2

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.
@@ -5,8 +5,8 @@ import { JWTPayload, JWK } from 'jose';
5
5
  import { ParsedQs } from 'qs';
6
6
  import { Readable } from 'stream';
7
7
  import { LevelWithSilentOrString, LevelWithSilent } from 'pino';
8
- import { FastMCP } from '@forklaunch/fastmcp-fork';
9
8
  import { CorsOptions } from 'cors';
9
+ import { FastMCP } from 'fastmcp';
10
10
  import http from 'http';
11
11
  import { ApiReferenceConfiguration } from '@scalar/express-api-reference';
12
12
 
@@ -5,8 +5,8 @@ import { JWTPayload, JWK } from 'jose';
5
5
  import { ParsedQs } from 'qs';
6
6
  import { Readable } from 'stream';
7
7
  import { LevelWithSilentOrString, LevelWithSilent } from 'pino';
8
- import { FastMCP } from '@forklaunch/fastmcp-fork';
9
8
  import { CorsOptions } from 'cors';
9
+ import { FastMCP } from 'fastmcp';
10
10
  import http from 'http';
11
11
  import { ApiReferenceConfiguration } from '@scalar/express-api-reference';
12
12
 
@@ -3,11 +3,11 @@ export { ParsedQs } from 'qs';
3
3
  import { Prettify, SanitizePathSlashes, PrettyCamelCase, TypeSafeFunction, UnionToIntersection, EmptyObject } from '@forklaunch/common';
4
4
  import { AnySchemaValidator } from '@forklaunch/validator';
5
5
  import { ServerOptions, IncomingMessage, ServerResponse } from 'node:http';
6
- import { M as Method, P as PathParamHttpContractDetails, H as HttpContractDetails, E as ExpressLikeRouterOptions, a as SessionObject, b as ParamsObject, R as ResponsesObject, B as Body, Q as QueryObject, c as HeadersObject, V as VersionSchema, d as SchemaAuthMethods, C as ContractDetails, e as ExpressLikeSchemaHandler, f as ResolvedSessionObject, g as PathMatch, L as LiveTypeFunction, h as LiveSdkFunction, A as AuthMethodsBase, O as OpenTelemetryCollector, i as MetricsDefinition, j as ExpressLikeApplicationOptions, k as ParamsDictionary, l as VersionedRequests, m as AuthMethods, D as DecodeResource, n as BasicAuthMethods, F as ForklaunchRequest, o as MiddlewareContractDetails, p as ExpressLikeSchemaAuthMapper, q as ForklaunchNextFunction, r as ForklaunchResponse, s as ForklaunchResHeaders, t as ForklaunchStatusResponse, u as ForklaunchSendableData, T as TelemetryOptions, v as LoggerMeta, w as LogFn } from '../apiDefinition.types--RSi8f6C.mjs';
7
- export { ac as BodyObject, ax as DocsConfiguration, a9 as ErrorContainer, a6 as ExpressLikeAuthMapper, ay as ExpressLikeGlobalAuthOptions, U as ExpressLikeHandler, az as ExpressLikeSchemaGlobalAuthOptions, _ as ExtractBody, X as ExtractContentType, Y as ExtractResponseBody, at as ExtractedParamsObject, ai as FileBody, G as ForklaunchBaseRequest, a8 as ForklaunchResErrors, ar as HmacMethods, av as HttpMethod, ag as JsonBody, aq as JwtAuthMethods, a7 as LiveTypeFunctionRequestInit, W as MapParamsSchema, $ as MapReqBodySchema, a1 as MapReqHeadersSchema, a0 as MapReqQuerySchema, Z as MapResBodyMapSchema, a2 as MapResHeadersSchema, as as MapSchema, a5 as MapSessionSchema, a3 as MapVersionedReqsSchema, a4 as MapVersionedRespsSchema, aA as MetricType, aj as MultipartForm, ab as NumberOnlyObject, au as PathParamMethod, ad as RawTypedResponseBody, z as RequestContext, J as ResolvedForklaunchAuthRequest, I as ResolvedForklaunchRequest, N as ResolvedForklaunchResponse, af as ResponseBody, aw as ResponseCompiledSchema, aa as ResponseShape, al as ServerSentEventBody, S as StringOnlyObject, ah as TextBody, ap as TypedBody, ao as TypedRequestBody, ae as TypedResponseBody, am as UnknownBody, an as UnknownResponseBody, ak as UrlEncodedForm, K as VersionedResponses, x as httpRequestsTotalCounter, y as httpServerDurationHistogram } from '../apiDefinition.types--RSi8f6C.mjs';
6
+ import { M as Method, P as PathParamHttpContractDetails, H as HttpContractDetails, E as ExpressLikeRouterOptions, a as SessionObject, b as ParamsObject, R as ResponsesObject, B as Body, Q as QueryObject, c as HeadersObject, V as VersionSchema, d as SchemaAuthMethods, C as ContractDetails, e as ExpressLikeSchemaHandler, f as ResolvedSessionObject, g as PathMatch, L as LiveTypeFunction, h as LiveSdkFunction, A as AuthMethodsBase, O as OpenTelemetryCollector, i as MetricsDefinition, j as ExpressLikeApplicationOptions, k as ParamsDictionary, l as VersionedRequests, m as AuthMethods, D as DecodeResource, n as BasicAuthMethods, F as ForklaunchRequest, o as MiddlewareContractDetails, p as ExpressLikeSchemaAuthMapper, q as ForklaunchNextFunction, r as ForklaunchResponse, s as ForklaunchResHeaders, t as ForklaunchStatusResponse, u as ForklaunchSendableData, T as TelemetryOptions, v as LoggerMeta, w as LogFn } from '../apiDefinition.types-XZ0lrfFc.mjs';
7
+ export { ac as BodyObject, ax as DocsConfiguration, a9 as ErrorContainer, a6 as ExpressLikeAuthMapper, ay as ExpressLikeGlobalAuthOptions, U as ExpressLikeHandler, az as ExpressLikeSchemaGlobalAuthOptions, _ as ExtractBody, X as ExtractContentType, Y as ExtractResponseBody, at as ExtractedParamsObject, ai as FileBody, G as ForklaunchBaseRequest, a8 as ForklaunchResErrors, ar as HmacMethods, av as HttpMethod, ag as JsonBody, aq as JwtAuthMethods, a7 as LiveTypeFunctionRequestInit, W as MapParamsSchema, $ as MapReqBodySchema, a1 as MapReqHeadersSchema, a0 as MapReqQuerySchema, Z as MapResBodyMapSchema, a2 as MapResHeadersSchema, as as MapSchema, a5 as MapSessionSchema, a3 as MapVersionedReqsSchema, a4 as MapVersionedRespsSchema, aA as MetricType, aj as MultipartForm, ab as NumberOnlyObject, au as PathParamMethod, ad as RawTypedResponseBody, z as RequestContext, J as ResolvedForklaunchAuthRequest, I as ResolvedForklaunchRequest, N as ResolvedForklaunchResponse, af as ResponseBody, aw as ResponseCompiledSchema, aa as ResponseShape, al as ServerSentEventBody, S as StringOnlyObject, ah as TextBody, ap as TypedBody, ao as TypedRequestBody, ae as TypedResponseBody, am as UnknownBody, an as UnknownResponseBody, ak as UrlEncodedForm, K as VersionedResponses, x as httpRequestsTotalCounter, y as httpServerDurationHistogram } from '../apiDefinition.types-XZ0lrfFc.mjs';
8
8
  import { JWK, JWTPayload } from 'jose';
9
- import { FastMCP } from '@forklaunch/fastmcp-fork';
10
9
  import { ZodSchemaValidator } from '@forklaunch/validator/zod';
10
+ import { FastMCP } from 'fastmcp';
11
11
  import http from 'http';
12
12
  import { OpenAPIObject } from 'openapi3-ts/oas31';
13
13
  import pino, { LevelWithSilentOrString, LevelWithSilent } from 'pino';
@@ -3,11 +3,11 @@ export { ParsedQs } from 'qs';
3
3
  import { Prettify, SanitizePathSlashes, PrettyCamelCase, TypeSafeFunction, UnionToIntersection, EmptyObject } from '@forklaunch/common';
4
4
  import { AnySchemaValidator } from '@forklaunch/validator';
5
5
  import { ServerOptions, IncomingMessage, ServerResponse } from 'node:http';
6
- import { M as Method, P as PathParamHttpContractDetails, H as HttpContractDetails, E as ExpressLikeRouterOptions, a as SessionObject, b as ParamsObject, R as ResponsesObject, B as Body, Q as QueryObject, c as HeadersObject, V as VersionSchema, d as SchemaAuthMethods, C as ContractDetails, e as ExpressLikeSchemaHandler, f as ResolvedSessionObject, g as PathMatch, L as LiveTypeFunction, h as LiveSdkFunction, A as AuthMethodsBase, O as OpenTelemetryCollector, i as MetricsDefinition, j as ExpressLikeApplicationOptions, k as ParamsDictionary, l as VersionedRequests, m as AuthMethods, D as DecodeResource, n as BasicAuthMethods, F as ForklaunchRequest, o as MiddlewareContractDetails, p as ExpressLikeSchemaAuthMapper, q as ForklaunchNextFunction, r as ForklaunchResponse, s as ForklaunchResHeaders, t as ForklaunchStatusResponse, u as ForklaunchSendableData, T as TelemetryOptions, v as LoggerMeta, w as LogFn } from '../apiDefinition.types--RSi8f6C.js';
7
- export { ac as BodyObject, ax as DocsConfiguration, a9 as ErrorContainer, a6 as ExpressLikeAuthMapper, ay as ExpressLikeGlobalAuthOptions, U as ExpressLikeHandler, az as ExpressLikeSchemaGlobalAuthOptions, _ as ExtractBody, X as ExtractContentType, Y as ExtractResponseBody, at as ExtractedParamsObject, ai as FileBody, G as ForklaunchBaseRequest, a8 as ForklaunchResErrors, ar as HmacMethods, av as HttpMethod, ag as JsonBody, aq as JwtAuthMethods, a7 as LiveTypeFunctionRequestInit, W as MapParamsSchema, $ as MapReqBodySchema, a1 as MapReqHeadersSchema, a0 as MapReqQuerySchema, Z as MapResBodyMapSchema, a2 as MapResHeadersSchema, as as MapSchema, a5 as MapSessionSchema, a3 as MapVersionedReqsSchema, a4 as MapVersionedRespsSchema, aA as MetricType, aj as MultipartForm, ab as NumberOnlyObject, au as PathParamMethod, ad as RawTypedResponseBody, z as RequestContext, J as ResolvedForklaunchAuthRequest, I as ResolvedForklaunchRequest, N as ResolvedForklaunchResponse, af as ResponseBody, aw as ResponseCompiledSchema, aa as ResponseShape, al as ServerSentEventBody, S as StringOnlyObject, ah as TextBody, ap as TypedBody, ao as TypedRequestBody, ae as TypedResponseBody, am as UnknownBody, an as UnknownResponseBody, ak as UrlEncodedForm, K as VersionedResponses, x as httpRequestsTotalCounter, y as httpServerDurationHistogram } from '../apiDefinition.types--RSi8f6C.js';
6
+ import { M as Method, P as PathParamHttpContractDetails, H as HttpContractDetails, E as ExpressLikeRouterOptions, a as SessionObject, b as ParamsObject, R as ResponsesObject, B as Body, Q as QueryObject, c as HeadersObject, V as VersionSchema, d as SchemaAuthMethods, C as ContractDetails, e as ExpressLikeSchemaHandler, f as ResolvedSessionObject, g as PathMatch, L as LiveTypeFunction, h as LiveSdkFunction, A as AuthMethodsBase, O as OpenTelemetryCollector, i as MetricsDefinition, j as ExpressLikeApplicationOptions, k as ParamsDictionary, l as VersionedRequests, m as AuthMethods, D as DecodeResource, n as BasicAuthMethods, F as ForklaunchRequest, o as MiddlewareContractDetails, p as ExpressLikeSchemaAuthMapper, q as ForklaunchNextFunction, r as ForklaunchResponse, s as ForklaunchResHeaders, t as ForklaunchStatusResponse, u as ForklaunchSendableData, T as TelemetryOptions, v as LoggerMeta, w as LogFn } from '../apiDefinition.types-XZ0lrfFc.js';
7
+ export { ac as BodyObject, ax as DocsConfiguration, a9 as ErrorContainer, a6 as ExpressLikeAuthMapper, ay as ExpressLikeGlobalAuthOptions, U as ExpressLikeHandler, az as ExpressLikeSchemaGlobalAuthOptions, _ as ExtractBody, X as ExtractContentType, Y as ExtractResponseBody, at as ExtractedParamsObject, ai as FileBody, G as ForklaunchBaseRequest, a8 as ForklaunchResErrors, ar as HmacMethods, av as HttpMethod, ag as JsonBody, aq as JwtAuthMethods, a7 as LiveTypeFunctionRequestInit, W as MapParamsSchema, $ as MapReqBodySchema, a1 as MapReqHeadersSchema, a0 as MapReqQuerySchema, Z as MapResBodyMapSchema, a2 as MapResHeadersSchema, as as MapSchema, a5 as MapSessionSchema, a3 as MapVersionedReqsSchema, a4 as MapVersionedRespsSchema, aA as MetricType, aj as MultipartForm, ab as NumberOnlyObject, au as PathParamMethod, ad as RawTypedResponseBody, z as RequestContext, J as ResolvedForklaunchAuthRequest, I as ResolvedForklaunchRequest, N as ResolvedForklaunchResponse, af as ResponseBody, aw as ResponseCompiledSchema, aa as ResponseShape, al as ServerSentEventBody, S as StringOnlyObject, ah as TextBody, ap as TypedBody, ao as TypedRequestBody, ae as TypedResponseBody, am as UnknownBody, an as UnknownResponseBody, ak as UrlEncodedForm, K as VersionedResponses, x as httpRequestsTotalCounter, y as httpServerDurationHistogram } from '../apiDefinition.types-XZ0lrfFc.js';
8
8
  import { JWK, JWTPayload } from 'jose';
9
- import { FastMCP } from '@forklaunch/fastmcp-fork';
10
9
  import { ZodSchemaValidator } from '@forklaunch/validator/zod';
10
+ import { FastMCP } from 'fastmcp';
11
11
  import http from 'http';
12
12
  import { OpenAPIObject } from 'openapi3-ts/oas31';
13
13
  import pino, { LevelWithSilentOrString, LevelWithSilent } from 'pino';
package/lib/http/index.js CHANGED
@@ -1539,56 +1539,94 @@ var ForklaunchExpressLikeRouter = class _ForklaunchExpressLikeRouter {
1539
1539
  * @param controllerHandler
1540
1540
  * @returns
1541
1541
  */
1542
- #localParamRequest(handlers, controllerHandler, version) {
1542
+ #localParamRequest(middlewares, controllerHandler, contractDetails, requestSchema, responseSchemas, version) {
1543
1543
  return async (route, request) => {
1544
1544
  let statusCode;
1545
1545
  let responseMessage;
1546
1546
  const responseHeaders = {};
1547
+ const resEventHandlers = {};
1547
1548
  const req = {
1548
1549
  params: request?.params ?? {},
1549
1550
  query: request?.query ?? {},
1550
1551
  headers: request?.headers ?? {},
1551
1552
  body: discriminateBody(this.schemaValidator, request?.body)?.schema ?? {},
1552
1553
  path: route,
1553
- version
1554
+ originalPath: route,
1555
+ method: "GET",
1556
+ version,
1557
+ // Properties needed by middlewares
1558
+ schemaValidator: this.schemaValidator,
1559
+ contractDetails,
1560
+ requestSchema,
1561
+ openTelemetryCollector: this.openTelemetryCollector,
1562
+ _globalOptions: () => this.routerOptions,
1563
+ context: {
1564
+ correlationId: "local-fetch-" + Date.now(),
1565
+ span: void 0
1566
+ },
1567
+ _rawBody: void 0,
1568
+ _parsedVersions: void 0
1554
1569
  };
1555
1570
  const res = {
1571
+ statusCode: 200,
1556
1572
  status: (code) => {
1557
1573
  statusCode = code;
1574
+ res.statusCode = code;
1558
1575
  return res;
1559
1576
  },
1560
1577
  send: (message) => {
1561
1578
  responseMessage = message;
1579
+ resEventHandlers["finish"]?.forEach((handler) => handler());
1562
1580
  },
1563
1581
  json: (body) => {
1564
1582
  responseMessage = body;
1583
+ resEventHandlers["finish"]?.forEach((handler) => handler());
1565
1584
  },
1566
1585
  jsonp: (body) => {
1567
1586
  responseMessage = body;
1587
+ resEventHandlers["finish"]?.forEach((handler) => handler());
1568
1588
  },
1569
1589
  setHeader: (key, value) => {
1570
1590
  responseHeaders[key] = value;
1591
+ return res;
1592
+ },
1593
+ getHeader: (key) => responseHeaders[key],
1594
+ type: (contentType) => {
1595
+ responseHeaders["content-type"] = contentType;
1596
+ return res;
1571
1597
  },
1572
1598
  sseEmitter: (generator) => {
1573
1599
  responseMessage = generator();
1574
1600
  },
1601
+ on: (event, handler) => {
1602
+ if (!resEventHandlers[event]) {
1603
+ resEventHandlers[event] = [];
1604
+ }
1605
+ resEventHandlers[event].push(handler);
1606
+ return res;
1607
+ },
1608
+ responseSchemas,
1575
1609
  version
1576
1610
  };
1577
- let cursor = handlers.shift();
1578
- if (cursor) {
1579
- for (const fn of handlers) {
1580
- await cursor(req, res, (err) => {
1611
+ const executeMiddlewares = request?.executeMiddlewares ?? false;
1612
+ if (executeMiddlewares && middlewares.length > 0) {
1613
+ const allHandlers = [...middlewares];
1614
+ let cursor = allHandlers.shift();
1615
+ if (cursor) {
1616
+ for (const fn of allHandlers) {
1617
+ await cursor(req, res, (err) => {
1618
+ if (err) {
1619
+ throw err;
1620
+ }
1621
+ cursor = fn;
1622
+ });
1623
+ }
1624
+ await cursor(req, res, async (err) => {
1581
1625
  if (err) {
1582
1626
  throw err;
1583
1627
  }
1584
- cursor = fn;
1585
1628
  });
1586
1629
  }
1587
- await cursor(req, res, async (err) => {
1588
- if (err) {
1589
- throw err;
1590
- }
1591
- });
1592
1630
  }
1593
1631
  const cHandler = controllerHandler;
1594
1632
  await cHandler(req, res, (err) => {
@@ -1644,12 +1682,18 @@ var ForklaunchExpressLikeRouter = class _ForklaunchExpressLikeRouter {
1644
1682
  this.#localParamRequest(
1645
1683
  middlewares,
1646
1684
  controllerHandler,
1685
+ contractDetails,
1686
+ requestSchema,
1687
+ responseSchemas,
1647
1688
  version
1648
1689
  )
1649
1690
  ])
1650
1691
  ) : this.#localParamRequest(
1651
1692
  middlewares,
1652
- controllerHandler
1693
+ controllerHandler,
1694
+ contractDetails,
1695
+ requestSchema,
1696
+ responseSchemas
1653
1697
  )
1654
1698
  };
1655
1699
  const contractDetailsName = contractDetails.name;
@@ -1660,12 +1704,18 @@ var ForklaunchExpressLikeRouter = class _ForklaunchExpressLikeRouter {
1660
1704
  (req) => this.#localParamRequest(
1661
1705
  middlewares,
1662
1706
  controllerHandler,
1707
+ contractDetails,
1708
+ requestSchema,
1709
+ responseSchemas,
1663
1710
  version
1664
1711
  )(`${this.basePath}${path}`, req)
1665
1712
  ])
1666
1713
  ) : (req) => this.#localParamRequest(
1667
1714
  middlewares,
1668
- controllerHandler
1715
+ controllerHandler,
1716
+ contractDetails,
1717
+ requestSchema,
1718
+ responseSchemas
1669
1719
  )(`${this.basePath}${path}`, req);
1670
1720
  }
1671
1721
  return this;
@@ -3236,8 +3286,8 @@ var httpStatusCodes_default = HTTPStatuses;
3236
3286
 
3237
3287
  // src/http/mcpGenerator/mcpGenerator.ts
3238
3288
  var import_common12 = require("@forklaunch/common");
3239
- var import_fastmcp_fork = require("@forklaunch/fastmcp-fork");
3240
3289
  var import_zod = require("@forklaunch/validator/zod");
3290
+ var import_fastmcp = require("fastmcp");
3241
3291
 
3242
3292
  // src/http/router/unpackRouters.ts
3243
3293
  function unpackRouters(routers, recursiveBasePath = []) {
@@ -3292,7 +3342,7 @@ function generateMcpServer(schemaValidator, protocol, host, port, version, appli
3292
3342
  "Schema validator must be an instance of ZodSchemaValidator"
3293
3343
  );
3294
3344
  }
3295
- const mcpServer = new import_fastmcp_fork.FastMCP({
3345
+ const mcpServer = new import_fastmcp.FastMCP({
3296
3346
  ...options2,
3297
3347
  name: options2?.name ?? "mcp-server",
3298
3348
  version,