@forklaunch/core 0.14.15 → 0.15.0
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/http/index.d.mts +129 -222
- package/lib/http/index.d.ts +129 -222
- package/lib/http/index.js +56 -107
- package/lib/http/index.js.map +1 -1
- package/lib/http/index.mjs +64 -113
- package/lib/http/index.mjs.map +1 -1
- package/package.json +11 -11
package/lib/http/index.d.ts
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
import { ParsedQs } from 'qs';
|
2
2
|
export { ParsedQs } from 'qs';
|
3
|
-
import { UnionToIntersection, TypeSafeFunction, StringWithoutSlash, Prettify,
|
3
|
+
import { UnionToIntersection, TypeSafeFunction, StringWithoutSlash, Prettify, MakePropertyOptionalIfChildrenOptional, SanitizePathSlashes, PrettyCamelCase, EmptyObject } from '@forklaunch/common';
|
4
4
|
import { AnySchemaValidator, UnboxedObjectSchema, IdiomaticSchema, Schema } from '@forklaunch/validator';
|
5
5
|
import { ServerOptions, IncomingMessage, ServerResponse } from 'node:http';
|
6
6
|
import { Counter, Gauge, Histogram, UpDownCounter, ObservableCounter, ObservableGauge, ObservableUpDownCounter, Span } from '@opentelemetry/api';
|
@@ -1111,6 +1111,13 @@ interface ForklaunchRouter<SV extends AnySchemaValidator> {
|
|
1111
1111
|
sdkPaths: Record<string, string>;
|
1112
1112
|
/** Options for the router */
|
1113
1113
|
routerOptions?: ExpressLikeRouterOptions<SV, SessionObject<SV>>;
|
1114
|
+
/** Insert the SDK path into the router */
|
1115
|
+
insertIntoRouterSdkPaths?: (params: {
|
1116
|
+
sdkPath: string;
|
1117
|
+
path: string;
|
1118
|
+
method: string;
|
1119
|
+
name: string;
|
1120
|
+
}) => void;
|
1114
1121
|
}
|
1115
1122
|
/**
|
1116
1123
|
* Interface representing a Forklaunch route.
|
@@ -1356,33 +1363,28 @@ type RouterMap<SV extends AnySchemaValidator> = {
|
|
1356
1363
|
[K: string]: SdkRouter | RouterMap<SV>;
|
1357
1364
|
};
|
1358
1365
|
/**
|
1359
|
-
*
|
1360
|
-
*
|
1361
|
-
* Traverses the nested router map and collects all SDK interfaces into a flat structure.
|
1366
|
+
* Recursive type representing a hierarchical map of SDK handlers.
|
1367
|
+
* Each key can either be a leaf node containing a SdkHandler, or a nested SdkHandlerObject for deeper structures.
|
1362
1368
|
*
|
1363
|
-
* @template SV - The schema validator type
|
1364
|
-
* @template T - The RouterMap to extract SDKs from
|
1365
|
-
* @template Acc - The accumulator type for collecting SDK interfaces (defaults to empty object)
|
1366
|
-
* @param SV - Must extend AnySchemaValidator
|
1367
|
-
* @param T - Must extend RouterMap<SV>
|
1368
|
-
* @param Acc - The accumulated SDK interfaces so far
|
1369
|
-
*
|
1370
|
-
* @returns A mapped type where each key corresponds to the original router structure,
|
1371
|
-
* but values are the extracted SDK interfaces instead of the full router configuration
|
1369
|
+
* @template SV - The schema validator type that constrains the handler structure.
|
1372
1370
|
*
|
1373
1371
|
* @example
|
1374
1372
|
* ```typescript
|
1375
|
-
*
|
1376
|
-
*
|
1377
|
-
*
|
1373
|
+
* const handlers: SdkHandlerObject<ZodValidator> = {
|
1374
|
+
* users: {
|
1375
|
+
* getUser: someSdkHandler,
|
1376
|
+
* posts: {
|
1377
|
+
* getPosts: anotherSdkHandler
|
1378
|
+
* }
|
1379
|
+
* }
|
1380
|
+
* };
|
1378
1381
|
* ```
|
1379
1382
|
*/
|
1380
|
-
type
|
1381
|
-
[K
|
1382
|
-
|
1383
|
-
} ? T[K]['sdk'] : T[K] extends RouterMap<SV> ? MapToSdk<SV, T[K], Acc> : never;
|
1384
|
-
}>;
|
1383
|
+
type SdkHandlerObject<SV extends AnySchemaValidator> = {
|
1384
|
+
[K: string]: SdkHandler | SdkHandlerObject<SV>;
|
1385
|
+
};
|
1385
1386
|
/**
|
1387
|
+
* @deprecated
|
1386
1388
|
* Tail-recursive type that extracts and flattens fetch map interfaces from a RouterMap structure.
|
1387
1389
|
* This version uses an accumulator pattern to avoid deep recursion and improve performance.
|
1388
1390
|
* Similar to MapToSdk but focuses on _fetchMap properties and merges all fetch maps into a single intersection type.
|
@@ -1409,7 +1411,6 @@ type MapToFetch<SV extends AnySchemaValidator, T extends RouterMap<SV>> = UnionT
|
|
1409
1411
|
_fetchMap: unknown;
|
1410
1412
|
} ? T[K]['_fetchMap'] extends Record<string, unknown> ? T[K]['_fetchMap'] : never : never;
|
1411
1413
|
}[keyof T]>>;
|
1412
|
-
type CollectionOptimized<T> = T extends infer U ? U : never;
|
1413
1414
|
/**
|
1414
1415
|
* Base interface for controller entries that defines the structure
|
1415
1416
|
* of each controller method with its path, HTTP method, and contract details.
|
@@ -1458,10 +1459,25 @@ type SdkHandler = {
|
|
1458
1459
|
versions?: unknown;
|
1459
1460
|
};
|
1460
1461
|
};
|
1461
|
-
type MapControllerToSdk<SV extends AnySchemaValidator, T extends Record<string, SdkHandler>> = CollectionOptimized<{
|
1462
|
-
[K in keyof T]: LiveSdkFunction<SV, T[K]['contractDetails']['params'] extends infer Params | undefined ? Params extends ParamsObject<SV> ? Params : ParamsObject<SV> : ParamsObject<SV>, T[K]['contractDetails']['responses'] extends infer Responses | undefined ? Responses extends ResponsesObject<SV> ? Responses : ResponsesObject<SV> : ResponsesObject<SV>, T[K]['contractDetails']['body'] extends infer B | undefined ? B extends Body<SV> ? B : Body<SV> : Body<SV>, T[K]['contractDetails']['query'] extends infer Q | undefined ? Q extends QueryObject<SV> ? Q : QueryObject<SV> : QueryObject<SV>, T[K]['contractDetails']['requestHeaders'] extends infer RequestHeaders | undefined ? RequestHeaders extends HeadersObject<SV> ? RequestHeaders : HeadersObject<SV> : HeadersObject<SV>, T[K]['contractDetails']['responseHeaders'] extends infer ResponseHeaders | undefined ? ResponseHeaders extends HeadersObject<SV> ? ResponseHeaders : HeadersObject<SV> : HeadersObject<SV>, T[K]['contractDetails']['versions'] extends infer Versions | undefined ? Versions extends VersionSchema<SV, Method> ? Versions : VersionSchema<SV, Method> : VersionSchema<SV, Method>, T[K]['contractDetails']['auth'] extends infer Auth | undefined ? Auth extends AuthMethodsBase ? Auth : AuthMethodsBase : AuthMethodsBase>;
|
1463
|
-
}>;
|
1464
1462
|
/**
|
1463
|
+
* Recursively maps a client controller definition to its corresponding live SDK function types.
|
1464
|
+
*
|
1465
|
+
* This utility type traverses the structure of a client controller object, replacing each
|
1466
|
+
* {@link SdkHandler} with its corresponding {@link MapHandlerToLiveSdk} type, while recursively
|
1467
|
+
* processing nested objects. This enables type-safe SDK generation for complex controller hierarchies.
|
1468
|
+
*
|
1469
|
+
* @template SV - The schema validator type (e.g., zod, typebox).
|
1470
|
+
* @template Client - The client controller object to map.
|
1471
|
+
*
|
1472
|
+
* @example
|
1473
|
+
* type MySdk = MapToSdk<typeof z, typeof myController>;
|
1474
|
+
*/
|
1475
|
+
type MapToSdk<SV extends AnySchemaValidator, Client> = {
|
1476
|
+
[K in keyof Client]: Client[K] extends SdkHandler ? MapHandlerToLiveSdk<SV, Client[K]> : MapToSdk<SV, Client[K]>;
|
1477
|
+
};
|
1478
|
+
type MapHandlerToLiveSdk<SV extends AnySchemaValidator, T extends SdkHandler> = LiveSdkFunction<SV, T['contractDetails']['params'] extends infer Params | undefined ? Params extends ParamsObject<SV> ? Params : ParamsObject<SV> : ParamsObject<SV>, T['contractDetails']['responses'] extends infer Responses | undefined ? Responses extends ResponsesObject<SV> ? Responses : ResponsesObject<SV> : ResponsesObject<SV>, T['contractDetails']['body'] extends infer B | undefined ? B extends Body<SV> ? B : Body<SV> : Body<SV>, T['contractDetails']['query'] extends infer Q | undefined ? Q extends QueryObject<SV> ? Q : QueryObject<SV> : QueryObject<SV>, T['contractDetails']['requestHeaders'] extends infer RequestHeaders | undefined ? RequestHeaders extends HeadersObject<SV> ? RequestHeaders : HeadersObject<SV> : HeadersObject<SV>, T['contractDetails']['responseHeaders'] extends infer ResponseHeaders | undefined ? ResponseHeaders extends HeadersObject<SV> ? ResponseHeaders : HeadersObject<SV> : HeadersObject<SV>, T['contractDetails']['versions'] extends infer Versions | undefined ? Versions extends VersionSchema<SV, Method> ? Versions : VersionSchema<SV, Method> : VersionSchema<SV, Method>, T['contractDetails']['auth'] extends infer Auth | undefined ? Auth extends AuthMethodsBase ? Auth : AuthMethodsBase : AuthMethodsBase>;
|
1479
|
+
/**
|
1480
|
+
* @deprecated
|
1465
1481
|
* Extracts and constructs a LiveTypeFunction from an SdkHandler object.
|
1466
1482
|
* This optimized version reduces redundant type inference while maintaining type safety.
|
1467
1483
|
*
|
@@ -1480,6 +1496,7 @@ type MapControllerToSdk<SV extends AnySchemaValidator, T extends Record<string,
|
|
1480
1496
|
*/
|
1481
1497
|
type ExtractLiveTypeFn<Entry extends SdkHandler, SV extends AnySchemaValidator, BasePath extends `/${string}`> = LiveTypeFunction<SV, Entry['_path'] extends infer Path | undefined ? Path extends `/${string}` ? `${BasePath}${Path}` : never : never, Entry['contractDetails']['params'] extends infer Params | undefined ? Params extends ParamsObject<SV> ? Params : ParamsObject<SV> : ParamsObject<SV>, Entry['contractDetails']['responses'] extends infer Responses | undefined ? Responses extends ResponsesObject<SV> ? Responses : ResponsesObject<SV> : ResponsesObject<SV>, Entry['contractDetails']['body'] extends infer B | undefined ? B extends Body<SV> ? B : Body<SV> : Body<SV>, Entry['contractDetails']['query'] extends infer Q | undefined ? Q extends QueryObject<SV> ? Q : QueryObject<SV> : QueryObject<SV>, Entry['contractDetails']['requestHeaders'] extends infer RequestHeaders | undefined ? RequestHeaders extends HeadersObject<SV> ? RequestHeaders : HeadersObject<SV> : HeadersObject<SV>, Entry['contractDetails']['responseHeaders'] extends infer ResponseHeaders | undefined ? ResponseHeaders extends HeadersObject<SV> ? ResponseHeaders : HeadersObject<SV> : HeadersObject<SV>, Entry['_method'] extends Method ? Entry['_method'] : never, Entry['contractDetails']['versions'] extends infer Versions | undefined ? Versions extends VersionSchema<SV, Method> ? Versions : VersionSchema<SV, Method> : VersionSchema<SV, Method>, Entry['contractDetails']['auth'] extends infer Auth | undefined ? Auth extends AuthMethodsBase ? Auth : AuthMethodsBase : AuthMethodsBase>;
|
1482
1498
|
/**
|
1499
|
+
* @deprecated
|
1483
1500
|
* Transforms a controller object into a fetch map structure that provides
|
1484
1501
|
* type-safe access to HTTP endpoints. This optimized version reduces complexity
|
1485
1502
|
* while maintaining full type safety and discriminated union behavior.
|
@@ -1657,6 +1674,14 @@ declare class ForklaunchExpressLikeRouter<SV extends AnySchemaValidator, BasePat
|
|
1657
1674
|
* @returns {ExpressRouter} - The Express router.
|
1658
1675
|
*/
|
1659
1676
|
trace: LiveTypeRouteDefinition<SV, BasePath, 'trace', RouterHandler, Internal, RouterSession, BaseRequest, BaseResponse, NextFunction, this>;
|
1677
|
+
insertIntoRouterSdkPaths({ sdkPath, path, method, name }: {
|
1678
|
+
sdkPath: string;
|
1679
|
+
name: string;
|
1680
|
+
path: string;
|
1681
|
+
method: string;
|
1682
|
+
}): void;
|
1683
|
+
private unpackSdks;
|
1684
|
+
registerSdks(sdks: SdkHandlerObject<SV>): void;
|
1660
1685
|
protected cloneInternals(clone: this): void;
|
1661
1686
|
clone(): this;
|
1662
1687
|
}
|
@@ -1718,6 +1743,84 @@ declare function createHmacToken({ method, path, body, timestamp, nonce, secretK
|
|
1718
1743
|
secretKey: string;
|
1719
1744
|
}): string;
|
1720
1745
|
|
1746
|
+
/**
|
1747
|
+
* Retrieves and caches the JSON Web Key Set (JWKS) from a given public key URL.
|
1748
|
+
*
|
1749
|
+
* This function fetches the JWKS from the specified URL and caches the result in memory
|
1750
|
+
* to avoid unnecessary network requests. The cache is considered valid for a duration
|
1751
|
+
* specified by the `cache-control` header in the JWKS HTTP response (in seconds), or
|
1752
|
+
* falls back to a default TTL if the header is not present. If the cache is still valid,
|
1753
|
+
* the cached keys are returned immediately.
|
1754
|
+
*
|
1755
|
+
* @param {string} jwksPublicKeyUrl - The URL to fetch the JWKS from.
|
1756
|
+
* @returns {Promise<JWK[]>} A promise that resolves to an array of JWK objects.
|
1757
|
+
*
|
1758
|
+
* @example
|
1759
|
+
* const jwks = await getCachedJwks('https://example.com/.well-known/jwks.json');
|
1760
|
+
* // Use jwks for JWT verification, etc.
|
1761
|
+
*/
|
1762
|
+
declare function getCachedJwks(jwksPublicKeyUrl: string): Promise<JWK[]>;
|
1763
|
+
/**
|
1764
|
+
* Discriminates between different authentication methods and returns a typed result.
|
1765
|
+
*
|
1766
|
+
* This function analyzes the provided authentication configuration and determines
|
1767
|
+
* whether it uses basic authentication or JWT authentication. It returns a
|
1768
|
+
* discriminated union type that includes the authentication type and the
|
1769
|
+
* corresponding authentication configuration.
|
1770
|
+
*
|
1771
|
+
* @template SV - A type that extends AnySchemaValidator
|
1772
|
+
* @template P - A type that extends ParamsDictionary
|
1773
|
+
* @template ReqBody - A type that extends Record<string, unknown>
|
1774
|
+
* @template ReqQuery - A type that extends ParsedQs
|
1775
|
+
* @template ReqHeaders - A type that extends Record<string, unknown>
|
1776
|
+
* @template BaseRequest - The base request type
|
1777
|
+
*
|
1778
|
+
* @param auth - The authentication methods configuration object
|
1779
|
+
* @returns A discriminated union object with either:
|
1780
|
+
* - `{ type: 'basic', auth: BasicAuthMethods['basic'] }` for basic authentication
|
1781
|
+
* - `{ type: 'jwt', auth?: JwtAuthMethods['jwt'] }` for JWT authentication (auth is optional)
|
1782
|
+
*
|
1783
|
+
* @example
|
1784
|
+
* ```typescript
|
1785
|
+
* const authConfig = {
|
1786
|
+
* basic: {
|
1787
|
+
* login: (username: string, password: string) => boolean
|
1788
|
+
* }
|
1789
|
+
* };
|
1790
|
+
* const result = discriminateAuthMethod(authConfig);
|
1791
|
+
* // result.type === 'basic'
|
1792
|
+
* // result.auth === authConfig.basic
|
1793
|
+
* ```
|
1794
|
+
*/
|
1795
|
+
declare function discriminateAuthMethod<SV extends AnySchemaValidator, P extends ParamsDictionary, ReqBody extends Record<string, unknown>, ReqQuery extends ParsedQs, ReqHeaders extends Record<string, string>, VersionedReqs extends VersionedRequests, BaseRequest>(auth: AuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedReqs, BaseRequest>): Promise<{
|
1796
|
+
type: 'basic';
|
1797
|
+
auth: {
|
1798
|
+
decodeResource?: DecodeResource;
|
1799
|
+
login: BasicAuthMethods['basic']['login'];
|
1800
|
+
};
|
1801
|
+
} | {
|
1802
|
+
type: 'jwt';
|
1803
|
+
auth: {
|
1804
|
+
decodeResource?: DecodeResource;
|
1805
|
+
} | {
|
1806
|
+
verificationFunction: (token: string) => Promise<JWTPayload | undefined>;
|
1807
|
+
};
|
1808
|
+
} | {
|
1809
|
+
type: 'hmac';
|
1810
|
+
auth: {
|
1811
|
+
secretKeys: Record<string, string>;
|
1812
|
+
verificationFunction: ({ body, path, method, timestamp, nonce, signature, secretKey }: {
|
1813
|
+
method: string;
|
1814
|
+
path: string;
|
1815
|
+
body?: unknown;
|
1816
|
+
timestamp: Date;
|
1817
|
+
nonce: string;
|
1818
|
+
signature: string;
|
1819
|
+
secretKey: string;
|
1820
|
+
}) => Promise<boolean | undefined>;
|
1821
|
+
};
|
1822
|
+
}>;
|
1823
|
+
|
1721
1824
|
/**
|
1722
1825
|
* Type guard that checks if an object is a Forklaunch request.
|
1723
1826
|
* A Forklaunch request is an object that contains contract details and follows the Forklaunch request structure.
|
@@ -1960,202 +2063,6 @@ declare function discriminateResponseBodies<SV extends AnySchemaValidator>(schem
|
|
1960
2063
|
schema: SV["_ValidSchemaObject"];
|
1961
2064
|
}>;
|
1962
2065
|
|
1963
|
-
/**
|
1964
|
-
* Creates a complete SDK client from a RouterMap configuration.
|
1965
|
-
* This is the main entry point for creating type-safe SDK clients that combine
|
1966
|
-
* both SDK interfaces and fetch functionality from router configurations.
|
1967
|
-
*
|
1968
|
-
* @template SV - The schema validator type that constrains the router structure
|
1969
|
-
* @template T - The RouterMap type to create the SDK client from
|
1970
|
-
* @param schemaValidator - The schema validator instance used for validation and type constraints
|
1971
|
-
* @param routerMap - The router map containing the complete API configuration
|
1972
|
-
*
|
1973
|
-
* @returns An object containing both the SDK interface and fetch function:
|
1974
|
-
* - `sdk`: The extracted SDK interfaces for direct method calls
|
1975
|
-
* - `fetch`: The unified fetch function for making HTTP requests
|
1976
|
-
*
|
1977
|
-
* @example
|
1978
|
-
* ```typescript
|
1979
|
-
* const routerMap = {
|
1980
|
-
* api: {
|
1981
|
-
* users: {
|
1982
|
-
* sdk: { getUser: (id: string) => Promise.resolve({ id, name: 'John' }) },
|
1983
|
-
* _fetchMap: { getUser: { get: (id: string) => fetch(`/api/users/${id}`) } }
|
1984
|
-
* },
|
1985
|
-
* posts: {
|
1986
|
-
* sdk: { getPosts: () => Promise.resolve([]) },
|
1987
|
-
* _fetchMap: { getPosts: { get: () => fetch('/api/posts') } }
|
1988
|
-
* }
|
1989
|
-
* }
|
1990
|
-
* };
|
1991
|
-
*
|
1992
|
-
* const client = sdkClient(zodValidator, routerMap);
|
1993
|
-
*
|
1994
|
-
* // Use SDK methods directly
|
1995
|
-
* const user = await client.sdk.api.users.getUser('123');
|
1996
|
-
*
|
1997
|
-
* // Use fetch function for custom requests
|
1998
|
-
* const response = await client.fetch('getUser', { params: { id: '123' } });
|
1999
|
-
* ```
|
2000
|
-
*/
|
2001
|
-
declare function sdkClient<SV extends AnySchemaValidator, T extends RouterMap<SV>>(schemaValidator: SV, routerMap: T): {
|
2002
|
-
_finalizedSdk: true;
|
2003
|
-
sdk: MapToSdk<SV, T>;
|
2004
|
-
fetch: FetchFunction<MapToFetch<SV, T>>;
|
2005
|
-
};
|
2006
|
-
|
2007
|
-
/**
|
2008
|
-
* Creates a type-safe SDK router by mapping controller definitions to router SDK functions.
|
2009
|
-
* This function takes a controller object with contract details and maps each controller method
|
2010
|
-
* to the corresponding SDK function from the router, ensuring type safety throughout the process.
|
2011
|
-
* The function now uses `const` template parameters for better type inference and includes
|
2012
|
-
* a comprehensive fetch map for enhanced type safety.
|
2013
|
-
*
|
2014
|
-
* @template SV - The schema validator type that constrains the router and controller structure
|
2015
|
-
* @template T - The controller type containing contract details for each endpoint (const parameter)
|
2016
|
-
* @template Router - The router type that provides SDK functions, fetch, and _fetchMap capabilities (const parameter)
|
2017
|
-
* @param SV - Must extend AnySchemaValidator to ensure type safety
|
2018
|
-
* @param T - Must be a const record where each key maps to a controller method with contract details
|
2019
|
-
* @param Router - Must be a const object with optional sdk, fetch, and _fetchMap properties
|
2020
|
-
*
|
2021
|
-
* @param schemaValidator - The schema validator instance used for validation and type constraints
|
2022
|
-
* @param controller - The controller object containing contract details for each endpoint
|
2023
|
-
* @param router - The router instance that provides SDK functions, fetch, and _fetchMap capabilities
|
2024
|
-
*
|
2025
|
-
* @returns An object containing:
|
2026
|
-
* - `sdk`: Type-safe SDK functions mapped from controller methods using LiveSdkFunction
|
2027
|
-
* - `fetch`: The router's fetch function cast to FetchFunction with proper typing
|
2028
|
-
* - `_fetchMap`: A comprehensive fetch map with LiveTypeFunction for each endpoint and method
|
2029
|
-
*
|
2030
|
-
* @example
|
2031
|
-
* ```typescript
|
2032
|
-
* const controller = {
|
2033
|
-
* createAgent: {
|
2034
|
-
* _path: '/agents',
|
2035
|
-
* _method: 'POST',
|
2036
|
-
* contractDetails: {
|
2037
|
-
* name: 'createAgent',
|
2038
|
-
* body: { name: 'string', organizationId: 'string' },
|
2039
|
-
* responses: { 200: { id: 'string', name: 'string' } }
|
2040
|
-
* }
|
2041
|
-
* },
|
2042
|
-
* getAgent: {
|
2043
|
-
* _path: '/agents/:id',
|
2044
|
-
* _method: 'GET',
|
2045
|
-
* contractDetails: {
|
2046
|
-
* name: 'getAgent',
|
2047
|
-
* params: { id: 'string' },
|
2048
|
-
* responses: { 200: { id: 'string', name: 'string' } }
|
2049
|
-
* }
|
2050
|
-
* }
|
2051
|
-
* } as const;
|
2052
|
-
*
|
2053
|
-
* const router = {
|
2054
|
-
* sdk: { createAgent: () => Promise.resolve({}), getAgent: () => Promise.resolve({}) },
|
2055
|
-
* fetch: (path: string, options: any) => fetch(path, options),
|
2056
|
-
* _fetchMap: { '/agents': { POST: () => fetch('/agents', { method: 'POST' }) } }
|
2057
|
-
* } as const;
|
2058
|
-
*
|
2059
|
-
* const sdkRouter = sdkRouter(zodValidator, controller, router);
|
2060
|
-
*
|
2061
|
-
* // Use SDK functions with full type safety
|
2062
|
-
* const agent = await sdkRouter.sdk.createAgent({
|
2063
|
-
* body: { name: 'My Agent', organizationId: 'org123' }
|
2064
|
-
* });
|
2065
|
-
*
|
2066
|
-
* const agentData = await sdkRouter.sdk.getAgent({
|
2067
|
-
* params: { id: 'agent123' }
|
2068
|
-
* });
|
2069
|
-
*
|
2070
|
-
* // Use fetch function with enhanced type safety
|
2071
|
-
* const response = await sdkRouter.fetch('/agents', {
|
2072
|
-
* method: 'POST',
|
2073
|
-
* body: { name: 'Custom Agent', organizationId: 'org456' }
|
2074
|
-
* });
|
2075
|
-
*
|
2076
|
-
* // Access the fetch map for advanced usage
|
2077
|
-
* const _fetchMap = sdkRouter._fetchMap;
|
2078
|
-
* ```
|
2079
|
-
*/
|
2080
|
-
declare function sdkRouter<SV extends AnySchemaValidator, const T extends Record<string, SdkHandler>, const Router extends {
|
2081
|
-
sdk?: unknown;
|
2082
|
-
fetch?: unknown;
|
2083
|
-
_fetchMap?: unknown;
|
2084
|
-
basePath?: string;
|
2085
|
-
sdkPaths: Record<string, string>;
|
2086
|
-
}>(schemaValidator: SV, controller: T, router: Router): {
|
2087
|
-
sdk: MapControllerToSdk<SV, T>;
|
2088
|
-
fetch: FetchFunction<{ [K_1 in keyof T as T[K_1]["_path"] extends infer P | undefined ? P extends `/${string}` ? `${Router["basePath"] extends `/${string}` ? Router["basePath"] : "/"}${P}` : never : never]: { [M in T[K_1]["_method"] as M extends Method ? Uppercase<M> : never]: LiveTypeFunction<SV, Extract<T[K_1], {
|
2089
|
-
_path: T[K_1]["_path"];
|
2090
|
-
_method: M;
|
2091
|
-
}>["_path"] extends infer Path | undefined ? Path extends `/${string}` ? `${Router["basePath"] extends `/${string}` ? Router["basePath"] : "/"}${Path}` : never : never, Extract<T[K_1], {
|
2092
|
-
_path: T[K_1]["_path"];
|
2093
|
-
_method: M;
|
2094
|
-
}>["contractDetails"]["params"] extends infer Params | undefined ? Params extends ParamsObject<SV> ? Params : ParamsObject<SV> : ParamsObject<SV>, Extract<T[K_1], {
|
2095
|
-
_path: T[K_1]["_path"];
|
2096
|
-
_method: M;
|
2097
|
-
}>["contractDetails"]["responses"] extends infer Responses | undefined ? Responses extends ResponsesObject<SV> ? Responses : ResponsesObject<SV> : ResponsesObject<SV>, Extract<T[K_1], {
|
2098
|
-
_path: T[K_1]["_path"];
|
2099
|
-
_method: M;
|
2100
|
-
}>["contractDetails"]["body"] extends infer B | undefined ? B extends Body<SV> ? B : Body<SV> : Body<SV>, Extract<T[K_1], {
|
2101
|
-
_path: T[K_1]["_path"];
|
2102
|
-
_method: M;
|
2103
|
-
}>["contractDetails"]["query"] extends infer Q | undefined ? Q extends QueryObject<SV> ? Q : QueryObject<SV> : QueryObject<SV>, Extract<T[K_1], {
|
2104
|
-
_path: T[K_1]["_path"];
|
2105
|
-
_method: M;
|
2106
|
-
}>["contractDetails"]["requestHeaders"] extends infer RequestHeaders | undefined ? RequestHeaders extends HeadersObject<SV> ? RequestHeaders : HeadersObject<SV> : HeadersObject<SV>, Extract<T[K_1], {
|
2107
|
-
_path: T[K_1]["_path"];
|
2108
|
-
_method: M;
|
2109
|
-
}>["contractDetails"]["responseHeaders"] extends infer ResponseHeaders | undefined ? ResponseHeaders extends HeadersObject<SV> ? ResponseHeaders : HeadersObject<SV> : HeadersObject<SV>, Extract<T[K_1], {
|
2110
|
-
_path: T[K_1]["_path"];
|
2111
|
-
_method: M;
|
2112
|
-
}>["_method"] extends Method ? Extract<T[K_1], {
|
2113
|
-
_path: T[K_1]["_path"];
|
2114
|
-
_method: M;
|
2115
|
-
}>["_method"] : never, Extract<T[K_1], {
|
2116
|
-
_path: T[K_1]["_path"];
|
2117
|
-
_method: M;
|
2118
|
-
}>["contractDetails"]["versions"] extends infer Versions | undefined ? Versions extends VersionSchema<SV, Method> ? Versions : VersionSchema<SV, Method> : VersionSchema<SV, Method>, Extract<T[K_1], {
|
2119
|
-
_path: T[K_1]["_path"];
|
2120
|
-
_method: M;
|
2121
|
-
}>["contractDetails"]["auth"] extends infer Auth | undefined ? Auth extends AuthMethodsBase ? Auth : AuthMethodsBase : AuthMethodsBase>; }; } extends infer T_1 ? { [K in keyof T_1]: T_1[K]; } : never>;
|
2122
|
-
_fetchMap: { [K_1 in keyof T as T[K_1]["_path"] extends infer P | undefined ? P extends `/${string}` ? `${Router["basePath"] extends `/${string}` ? Router["basePath"] : "/"}${P}` : never : never]: { [M in T[K_1]["_method"] as M extends Method ? Uppercase<M> : never]: LiveTypeFunction<SV, Extract<T[K_1], {
|
2123
|
-
_path: T[K_1]["_path"];
|
2124
|
-
_method: M;
|
2125
|
-
}>["_path"] extends infer Path | undefined ? Path extends `/${string}` ? `${Router["basePath"] extends `/${string}` ? Router["basePath"] : "/"}${Path}` : never : never, Extract<T[K_1], {
|
2126
|
-
_path: T[K_1]["_path"];
|
2127
|
-
_method: M;
|
2128
|
-
}>["contractDetails"]["params"] extends infer Params | undefined ? Params extends ParamsObject<SV> ? Params : ParamsObject<SV> : ParamsObject<SV>, Extract<T[K_1], {
|
2129
|
-
_path: T[K_1]["_path"];
|
2130
|
-
_method: M;
|
2131
|
-
}>["contractDetails"]["responses"] extends infer Responses | undefined ? Responses extends ResponsesObject<SV> ? Responses : ResponsesObject<SV> : ResponsesObject<SV>, Extract<T[K_1], {
|
2132
|
-
_path: T[K_1]["_path"];
|
2133
|
-
_method: M;
|
2134
|
-
}>["contractDetails"]["body"] extends infer B | undefined ? B extends Body<SV> ? B : Body<SV> : Body<SV>, Extract<T[K_1], {
|
2135
|
-
_path: T[K_1]["_path"];
|
2136
|
-
_method: M;
|
2137
|
-
}>["contractDetails"]["query"] extends infer Q | undefined ? Q extends QueryObject<SV> ? Q : QueryObject<SV> : QueryObject<SV>, Extract<T[K_1], {
|
2138
|
-
_path: T[K_1]["_path"];
|
2139
|
-
_method: M;
|
2140
|
-
}>["contractDetails"]["requestHeaders"] extends infer RequestHeaders | undefined ? RequestHeaders extends HeadersObject<SV> ? RequestHeaders : HeadersObject<SV> : HeadersObject<SV>, Extract<T[K_1], {
|
2141
|
-
_path: T[K_1]["_path"];
|
2142
|
-
_method: M;
|
2143
|
-
}>["contractDetails"]["responseHeaders"] extends infer ResponseHeaders | undefined ? ResponseHeaders extends HeadersObject<SV> ? ResponseHeaders : HeadersObject<SV> : HeadersObject<SV>, Extract<T[K_1], {
|
2144
|
-
_path: T[K_1]["_path"];
|
2145
|
-
_method: M;
|
2146
|
-
}>["_method"] extends Method ? Extract<T[K_1], {
|
2147
|
-
_path: T[K_1]["_path"];
|
2148
|
-
_method: M;
|
2149
|
-
}>["_method"] : never, Extract<T[K_1], {
|
2150
|
-
_path: T[K_1]["_path"];
|
2151
|
-
_method: M;
|
2152
|
-
}>["contractDetails"]["versions"] extends infer Versions | undefined ? Versions extends VersionSchema<SV, Method> ? Versions : VersionSchema<SV, Method> : VersionSchema<SV, Method>, Extract<T[K_1], {
|
2153
|
-
_path: T[K_1]["_path"];
|
2154
|
-
_method: M;
|
2155
|
-
}>["contractDetails"]["auth"] extends infer Auth | undefined ? Auth extends AuthMethodsBase ? Auth : AuthMethodsBase : AuthMethodsBase>; }; } extends infer T_2 ? { [K in keyof T_2]: T_2[K]; } : never;
|
2156
|
-
sdkPaths: Router["sdkPaths"];
|
2157
|
-
};
|
2158
|
-
|
2159
2066
|
declare const ATTR_API_NAME = "api.name";
|
2160
2067
|
declare const ATTR_CORRELATION_ID = "correlation.id";
|
2161
2068
|
|
@@ -2189,4 +2096,4 @@ declare function logger(level: LevelWithSilentOrString, meta?: AnyValueMap): Pin
|
|
2189
2096
|
|
2190
2097
|
declare function recordMetric<SV extends AnySchemaValidator, P extends ParamsDictionary, ReqBody extends Record<string, unknown>, ReqQuery extends ParsedQs, ResBodyMap extends Record<string, unknown>, ReqHeaders extends Record<string, string>, ResHeaders extends Record<string, unknown>, LocalsObj extends Record<string, unknown>, VersionedReqs extends VersionedRequests, SessionSchema extends Record<string, unknown>>(req: ForklaunchRequest<SV, P, ReqBody, ReqQuery, ReqHeaders, Extract<keyof VersionedReqs, string>, SessionSchema>, res: ForklaunchResponse<unknown, ResBodyMap, ResHeaders, LocalsObj, Extract<keyof VersionedReqs, string>>): void;
|
2191
2098
|
|
2192
|
-
export { ATTR_API_NAME, ATTR_CORRELATION_ID, type AuthMethods, type AuthMethodsBase, type BasicAuthMethods, type Body, type BodyObject, type ClusterConfig, type ConstrainedForklaunchRouter, type ContractDetails, type ContractDetailsExpressLikeSchemaHandler, type ContractDetailsOrMiddlewareOrTypedHandler, type DecodeResource, type DocsConfiguration, type ErrorContainer, type ExpressLikeApplicationOptions, type ExpressLikeAuthMapper, type ExpressLikeGlobalAuthOptions, type ExpressLikeHandler, type ExpressLikeRouter, type ExpressLikeRouterOptions, type ExpressLikeSchemaAuthMapper, type ExpressLikeSchemaGlobalAuthOptions, type ExpressLikeSchemaHandler, type ExpressLikeTypedHandler, type ExtractBody, type ExtractContentType, type ExtractLiveTypeFn, type ExtractResponseBody, type ExtractedParamsObject, type FetchFunction, type FileBody, type ForklaunchBaseRequest, ForklaunchExpressLikeApplication, ForklaunchExpressLikeRouter, type ForklaunchNextFunction, type ForklaunchRequest, type ForklaunchResErrors, type ForklaunchResHeaders, type ForklaunchResponse, type ForklaunchRoute, type ForklaunchRouter, type ForklaunchSendableData, type ForklaunchStatusResponse, HTTPStatuses, type HeadersObject, type HmacMethods, type HttpContractDetails, type HttpMethod, type JsonBody, type JwtAuthMethods, type LiveSdkFunction, type LiveTypeFunction, type LiveTypeFunctionRequestInit, type LiveTypeRouteDefinition, type LogFn, type LoggerMeta, type
|
2099
|
+
export { ATTR_API_NAME, ATTR_CORRELATION_ID, type AuthMethods, type AuthMethodsBase, type BasicAuthMethods, type Body, type BodyObject, type ClusterConfig, type ConstrainedForklaunchRouter, type ContractDetails, type ContractDetailsExpressLikeSchemaHandler, type ContractDetailsOrMiddlewareOrTypedHandler, type DecodeResource, type DocsConfiguration, type ErrorContainer, type ExpressLikeApplicationOptions, type ExpressLikeAuthMapper, type ExpressLikeGlobalAuthOptions, type ExpressLikeHandler, type ExpressLikeRouter, type ExpressLikeRouterOptions, type ExpressLikeSchemaAuthMapper, type ExpressLikeSchemaGlobalAuthOptions, type ExpressLikeSchemaHandler, type ExpressLikeTypedHandler, type ExtractBody, type ExtractContentType, type ExtractLiveTypeFn, type ExtractResponseBody, type ExtractedParamsObject, type FetchFunction, type FileBody, type ForklaunchBaseRequest, ForklaunchExpressLikeApplication, ForklaunchExpressLikeRouter, type ForklaunchNextFunction, type ForklaunchRequest, type ForklaunchResErrors, type ForklaunchResHeaders, type ForklaunchResponse, type ForklaunchRoute, type ForklaunchRouter, type ForklaunchSendableData, type ForklaunchStatusResponse, HTTPStatuses, type HeadersObject, type HmacMethods, type HttpContractDetails, type HttpMethod, type JsonBody, type JwtAuthMethods, type LiveSdkFunction, type LiveTypeFunction, type LiveTypeFunctionRequestInit, type LiveTypeRouteDefinition, type LogFn, type LoggerMeta, type MapHandlerToLiveSdk, type MapParamsSchema, type MapReqBodySchema, type MapReqHeadersSchema, type MapReqQuerySchema, type MapResBodyMapSchema, type MapResHeadersSchema, type MapSchema, type MapSessionSchema, type MapToFetch, type MapToSdk, type MapVersionedReqsSchema, type MapVersionedRespsSchema, type Method, type MetricType, type MetricsDefinition, type MiddlewareContractDetails, type MiddlewareOrMiddlewareWithTypedHandler, type MultipartForm, type NestableRouterBasedHandler, type NumberOnlyObject, OPENAPI_DEFAULT_VERSION, OpenTelemetryCollector, type ParamsDictionary, type ParamsObject, type PathBasedHandler, type PathMatch, type PathOrMiddlewareBasedHandler, type PathParamHttpContractDetails, type PathParamMethod, type QueryObject, type RawTypedResponseBody, type RequestContext, type ResolvedForklaunchAuthRequest, type ResolvedForklaunchRequest, type ResolvedForklaunchResponse, type ResolvedSessionObject, type ResponseBody, type ResponseCompiledSchema, type ResponseShape, type ResponsesObject, type RouterMap, type RoutingStrategy, type SchemaAuthMethods, type SdkHandler, type SdkHandlerObject, type SdkRouter, type ServerSentEventBody, type SessionObject, type StatusCode, type StringOnlyObject, type TelemetryOptions, type TextBody, type ToFetchMap, type TypedBody, type TypedHandler, type TypedMiddlewareDefinition, type TypedNestableMiddlewareDefinition, type TypedRequestBody, type TypedResponseBody, type UnknownBody, type UnknownResponseBody, type UrlEncodedForm, type VersionSchema, type VersionedRequests, type VersionedResponses, createHmacToken, delete_, discriminateAuthMethod, discriminateBody, discriminateResponseBodies, enrichExpressLikeSend, evaluateTelemetryOptions, generateMcpServer, generateOpenApiSpecs, get, getCachedJwks, getCodeForStatus, head, httpRequestsTotalCounter, httpServerDurationHistogram, isClientError, isForklaunchRequest, isForklaunchRouter, isInformational, isPortBound, isRedirection, isServerError, isSuccessful, isValidStatusCode, logger, meta, metricsDefinitions, middleware, options, patch, post, put, recordMetric, trace, typedAuthHandler, typedHandler };
|
package/lib/http/index.js
CHANGED
@@ -43,6 +43,7 @@ __export(http_exports, {
|
|
43
43
|
OpenTelemetryCollector: () => OpenTelemetryCollector,
|
44
44
|
createHmacToken: () => createHmacToken,
|
45
45
|
delete_: () => delete_,
|
46
|
+
discriminateAuthMethod: () => discriminateAuthMethod,
|
46
47
|
discriminateBody: () => discriminateBody,
|
47
48
|
discriminateResponseBodies: () => discriminateResponseBodies,
|
48
49
|
enrichExpressLikeSend: () => enrichExpressLikeSend,
|
@@ -50,6 +51,7 @@ __export(http_exports, {
|
|
50
51
|
generateMcpServer: () => generateMcpServer,
|
51
52
|
generateOpenApiSpecs: () => generateOpenApiSpecs,
|
52
53
|
get: () => get,
|
54
|
+
getCachedJwks: () => getCachedJwks,
|
53
55
|
getCodeForStatus: () => getCodeForStatus,
|
54
56
|
head: () => head,
|
55
57
|
httpRequestsTotalCounter: () => httpRequestsTotalCounter,
|
@@ -72,8 +74,6 @@ __export(http_exports, {
|
|
72
74
|
post: () => post,
|
73
75
|
put: () => put,
|
74
76
|
recordMetric: () => recordMetric,
|
75
|
-
sdkClient: () => sdkClient,
|
76
|
-
sdkRouter: () => sdkRouter,
|
77
77
|
trace: () => trace3,
|
78
78
|
typedAuthHandler: () => typedAuthHandler,
|
79
79
|
typedHandler: () => typedHandler
|
@@ -151,6 +151,11 @@ function isHttpContractDetails(maybeContractDetails) {
|
|
151
151
|
));
|
152
152
|
}
|
153
153
|
|
154
|
+
// src/http/guards/isSdkHandler.ts
|
155
|
+
function isSdkHandler(handler) {
|
156
|
+
return typeof handler === "object" && handler !== null && "_path" in handler && "_method" in handler && "contractDetails" in handler;
|
157
|
+
}
|
158
|
+
|
154
159
|
// src/http/guards/isTypedHandler.ts
|
155
160
|
function isTypedHandler(maybeTypedHandler) {
|
156
161
|
return maybeTypedHandler != null && typeof maybeTypedHandler === "object" && "_typedHandler" in maybeTypedHandler && maybeTypedHandler._typedHandler === true;
|
@@ -1893,6 +1898,53 @@ var ForklaunchExpressLikeRouter = class _ForklaunchExpressLikeRouter {
|
|
1893
1898
|
...middlewareOrMiddlewareWithTypedHandler
|
1894
1899
|
);
|
1895
1900
|
};
|
1901
|
+
insertIntoRouterSdkPaths({
|
1902
|
+
sdkPath,
|
1903
|
+
path,
|
1904
|
+
method,
|
1905
|
+
name
|
1906
|
+
}) {
|
1907
|
+
const routePath = [method, path].join(".");
|
1908
|
+
for (const route of this.routes) {
|
1909
|
+
if (route.path === path && route.method === method && route.contractDetails.name === name) {
|
1910
|
+
this.sdkPaths[routePath] = sdkPath;
|
1911
|
+
}
|
1912
|
+
}
|
1913
|
+
for (const router of this.routers) {
|
1914
|
+
router.insertIntoRouterSdkPaths?.({
|
1915
|
+
sdkPath,
|
1916
|
+
path,
|
1917
|
+
method,
|
1918
|
+
name
|
1919
|
+
});
|
1920
|
+
}
|
1921
|
+
}
|
1922
|
+
unpackSdks(sdks, path, routerUniquenessCache) {
|
1923
|
+
Object.entries(sdks).forEach(([key, maybeHandler]) => {
|
1924
|
+
if (isSdkHandler(maybeHandler)) {
|
1925
|
+
const cacheKey = (0, import_common9.hashString)((0, import_common9.safeStringify)(maybeHandler));
|
1926
|
+
if (routerUniquenessCache.has(cacheKey)) {
|
1927
|
+
throw new Error(`SDK handler ${key} is already registered`);
|
1928
|
+
}
|
1929
|
+
routerUniquenessCache.add(cacheKey);
|
1930
|
+
if (!maybeHandler._method || !maybeHandler._path) {
|
1931
|
+
throw new Error(`SDK handler ${key} is missing method or path`);
|
1932
|
+
}
|
1933
|
+
this.insertIntoRouterSdkPaths({
|
1934
|
+
sdkPath: [...path, key].join("."),
|
1935
|
+
path: maybeHandler._path,
|
1936
|
+
method: maybeHandler._method,
|
1937
|
+
name: maybeHandler.contractDetails.name
|
1938
|
+
});
|
1939
|
+
routerUniquenessCache.add(cacheKey);
|
1940
|
+
} else {
|
1941
|
+
this.unpackSdks(maybeHandler, [...path, key], routerUniquenessCache);
|
1942
|
+
}
|
1943
|
+
});
|
1944
|
+
}
|
1945
|
+
registerSdks(sdks) {
|
1946
|
+
this.unpackSdks(sdks, [], /* @__PURE__ */ new Set());
|
1947
|
+
}
|
1896
1948
|
cloneInternals(clone) {
|
1897
1949
|
clone.routers = [...this.routers];
|
1898
1950
|
clone.routes = [...this.routes];
|
@@ -3910,109 +3962,6 @@ function generateOpenApiSpecs(schemaValidator, serverUrls, serverDescriptions, a
|
|
3910
3962
|
);
|
3911
3963
|
}
|
3912
3964
|
|
3913
|
-
// src/http/sdk/sdkClient.ts
|
3914
|
-
var import_common14 = require("@forklaunch/common");
|
3915
|
-
|
3916
|
-
// src/http/guards/isSdkRouter.ts
|
3917
|
-
function isSdkRouter(value) {
|
3918
|
-
return typeof value === "object" && value !== null && "sdk" in value && "_fetchMap" in value && "sdkPaths" in value;
|
3919
|
-
}
|
3920
|
-
|
3921
|
-
// src/http/sdk/sdkClient.ts
|
3922
|
-
function mapToSdk(schemaValidator, routerMap, runningPath = void 0) {
|
3923
|
-
const routerUniquenessCache = /* @__PURE__ */ new Set();
|
3924
|
-
return Object.fromEntries(
|
3925
|
-
Object.entries(routerMap).map(([key, value]) => {
|
3926
|
-
if (routerUniquenessCache.has((0, import_common14.hashString)((0, import_common14.safeStringify)(value)))) {
|
3927
|
-
throw new Error(
|
3928
|
-
`SdkClient: Cannot use the same router pointer twice. Please clone the duplicate router with .clone() or only use the router once.`
|
3929
|
-
);
|
3930
|
-
}
|
3931
|
-
routerUniquenessCache.add((0, import_common14.hashString)((0, import_common14.safeStringify)(value)));
|
3932
|
-
const currentPath = runningPath ? [runningPath, key].join(".") : key;
|
3933
|
-
if (isSdkRouter(value)) {
|
3934
|
-
Object.entries(value.sdkPaths).forEach(([routePath, sdkKey]) => {
|
3935
|
-
if ("controllerSdkPaths" in value && Array.isArray(value.controllerSdkPaths) && value.controllerSdkPaths.includes(routePath)) {
|
3936
|
-
value.sdkPaths[routePath] = [currentPath, sdkKey].join(".");
|
3937
|
-
}
|
3938
|
-
});
|
3939
|
-
return [key, value.sdk];
|
3940
|
-
} else {
|
3941
|
-
return [
|
3942
|
-
key,
|
3943
|
-
mapToSdk(
|
3944
|
-
schemaValidator,
|
3945
|
-
value,
|
3946
|
-
runningPath ? [runningPath, key].join(".") : key
|
3947
|
-
)
|
3948
|
-
];
|
3949
|
-
}
|
3950
|
-
})
|
3951
|
-
);
|
3952
|
-
}
|
3953
|
-
function flattenFetchMap(schemaValidator, routerMap) {
|
3954
|
-
const _fetchMap = Object.entries(routerMap).reduce(
|
3955
|
-
(acc, [, value]) => {
|
3956
|
-
if ("_fetchMap" in value) {
|
3957
|
-
return {
|
3958
|
-
...acc,
|
3959
|
-
...value._fetchMap
|
3960
|
-
};
|
3961
|
-
} else {
|
3962
|
-
return {
|
3963
|
-
...acc,
|
3964
|
-
...flattenFetchMap(schemaValidator, value)
|
3965
|
-
};
|
3966
|
-
}
|
3967
|
-
},
|
3968
|
-
{}
|
3969
|
-
);
|
3970
|
-
return _fetchMap;
|
3971
|
-
}
|
3972
|
-
function mapToFetch(schemaValidator, routerMap) {
|
3973
|
-
const flattenedFetchMap = flattenFetchMap(
|
3974
|
-
schemaValidator,
|
3975
|
-
routerMap
|
3976
|
-
);
|
3977
|
-
return ((path, ...reqInit) => {
|
3978
|
-
const method = reqInit[0]?.method;
|
3979
|
-
const version = reqInit[0] != null && "version" in reqInit[0] ? reqInit[0].version : void 0;
|
3980
|
-
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]);
|
3981
|
-
});
|
3982
|
-
}
|
3983
|
-
function sdkClient(schemaValidator, routerMap) {
|
3984
|
-
return {
|
3985
|
-
_finalizedSdk: true,
|
3986
|
-
sdk: mapToSdk(schemaValidator, routerMap),
|
3987
|
-
fetch: mapToFetch(schemaValidator, routerMap)
|
3988
|
-
};
|
3989
|
-
}
|
3990
|
-
|
3991
|
-
// src/http/sdk/sdkRouter.ts
|
3992
|
-
var import_common15 = require("@forklaunch/common");
|
3993
|
-
function sdkRouter(schemaValidator, controller, router) {
|
3994
|
-
const controllerSdkPaths = [];
|
3995
|
-
const mappedSdk = Object.fromEntries(
|
3996
|
-
Object.entries(controller).map(([key, value]) => {
|
3997
|
-
const sdkPath = [value._method, value._path].join(".");
|
3998
|
-
controllerSdkPaths.push(sdkPath);
|
3999
|
-
router.sdkPaths[sdkPath] = key;
|
4000
|
-
return [
|
4001
|
-
key,
|
4002
|
-
router.sdk[(0, import_common15.toPrettyCamelCase)(value.contractDetails.name)]
|
4003
|
-
];
|
4004
|
-
})
|
4005
|
-
);
|
4006
|
-
const _fetchMap = router._fetchMap;
|
4007
|
-
return {
|
4008
|
-
sdk: mappedSdk,
|
4009
|
-
fetch: router.fetch,
|
4010
|
-
_fetchMap,
|
4011
|
-
sdkPaths: router.sdkPaths,
|
4012
|
-
controllerSdkPaths
|
4013
|
-
};
|
4014
|
-
}
|
4015
|
-
|
4016
3965
|
// src/http/telemetry/evaluateTelemetryOptions.ts
|
4017
3966
|
function evaluateTelemetryOptions(telemetryOptions) {
|
4018
3967
|
return {
|
@@ -4048,6 +3997,7 @@ function metricsDefinitions(metrics2) {
|
|
4048
3997
|
OpenTelemetryCollector,
|
4049
3998
|
createHmacToken,
|
4050
3999
|
delete_,
|
4000
|
+
discriminateAuthMethod,
|
4051
4001
|
discriminateBody,
|
4052
4002
|
discriminateResponseBodies,
|
4053
4003
|
enrichExpressLikeSend,
|
@@ -4055,6 +4005,7 @@ function metricsDefinitions(metrics2) {
|
|
4055
4005
|
generateMcpServer,
|
4056
4006
|
generateOpenApiSpecs,
|
4057
4007
|
get,
|
4008
|
+
getCachedJwks,
|
4058
4009
|
getCodeForStatus,
|
4059
4010
|
head,
|
4060
4011
|
httpRequestsTotalCounter,
|
@@ -4077,8 +4028,6 @@ function metricsDefinitions(metrics2) {
|
|
4077
4028
|
post,
|
4078
4029
|
put,
|
4079
4030
|
recordMetric,
|
4080
|
-
sdkClient,
|
4081
|
-
sdkRouter,
|
4082
4031
|
trace,
|
4083
4032
|
typedAuthHandler,
|
4084
4033
|
typedHandler
|