@forklaunch/core 0.9.22 → 0.10.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 +296 -102
- package/lib/http/index.d.ts +296 -102
- package/lib/http/index.js +421 -160
- package/lib/http/index.js.map +1 -1
- package/lib/http/index.mjs +420 -156
- package/lib/http/index.mjs.map +1 -1
- package/package.json +13 -12
package/lib/http/index.d.mts
CHANGED
@@ -1,11 +1,13 @@
|
|
1
|
+
import { UnionToIntersection, StringWithoutSlash, Prettify, ExclusiveRecord, SanitizePathSlashes, MakePropertyOptionalIfChildrenOptional, PrettyCamelCase, TypeSafeFunction, MergeArrayOfMaps, UnionToIntersectionChildren, EmptyObject } from '@forklaunch/common';
|
1
2
|
import { AnySchemaValidator, UnboxedObjectSchema, IdiomaticSchema, Schema } from '@forklaunch/validator';
|
2
3
|
import { CorsOptions } from 'cors';
|
3
4
|
import { Counter, Gauge, Histogram, UpDownCounter, ObservableCounter, ObservableGauge, ObservableUpDownCounter, Span } from '@opentelemetry/api';
|
4
5
|
import { LevelWithSilentOrString, LevelWithSilent, Logger } from 'pino';
|
5
6
|
export { LevelWithSilent, LevelWithSilentOrString, Logger } from 'pino';
|
6
|
-
import { UnionToIntersection, MimeType, Prettify, ExclusiveRecord, RemoveTrailingSlash, MakePropertyOptionalIfChildrenOptional } from '@forklaunch/common';
|
7
7
|
import { ParsedQs } from 'qs';
|
8
8
|
import { Readable } from 'stream';
|
9
|
+
import { ZodSchemaValidator } from '@forklaunch/validator/zod';
|
10
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
9
11
|
import { OpenAPIObject } from 'openapi3-ts/oas31';
|
10
12
|
import { AnyValueMap } from '@opentelemetry/api-logs';
|
11
13
|
import { ApiReferenceConfiguration } from '@scalar/express-api-reference';
|
@@ -107,25 +109,25 @@ type NumberOnlyObject<SV extends AnySchemaValidator> = Omit<UnboxedObjectSchema<
|
|
107
109
|
*
|
108
110
|
* @template SV - A type that extends AnySchemaValidator.
|
109
111
|
*/
|
110
|
-
type BodyObject<SV extends AnySchemaValidator> = StringOnlyObject<SV
|
112
|
+
type BodyObject<SV extends AnySchemaValidator> = StringOnlyObject<SV>;
|
111
113
|
/**
|
112
114
|
* Type representing the parameters object in a request.
|
113
115
|
*
|
114
116
|
* @template SV - A type that extends AnySchemaValidator.
|
115
117
|
*/
|
116
|
-
type ParamsObject<SV extends AnySchemaValidator> = StringOnlyObject<SV
|
118
|
+
type ParamsObject<SV extends AnySchemaValidator> = StringOnlyObject<SV>;
|
117
119
|
/**
|
118
120
|
* Type representing the query object in a request.
|
119
121
|
*
|
120
122
|
* @template SV - A type that extends AnySchemaValidator.
|
121
123
|
*/
|
122
|
-
type QueryObject<SV extends AnySchemaValidator> = StringOnlyObject<SV
|
124
|
+
type QueryObject<SV extends AnySchemaValidator> = StringOnlyObject<SV>;
|
123
125
|
/**
|
124
126
|
* Type representing the headers object in a request.
|
125
127
|
*
|
126
128
|
* @template SV - A type that extends AnySchemaValidator.
|
127
129
|
*/
|
128
|
-
type HeadersObject<SV extends AnySchemaValidator> = StringOnlyObject<SV
|
130
|
+
type HeadersObject<SV extends AnySchemaValidator> = StringOnlyObject<SV>;
|
129
131
|
type RawTypedResponseBody<SV extends AnySchemaValidator> = TextBody<SV> | JsonBody<SV> | FileBody<SV> | ServerSentEventBody<SV> | UnknownResponseBody<SV>;
|
130
132
|
type ExclusiveResponseBodyBase<SV extends AnySchemaValidator> = {
|
131
133
|
[K in keyof UnionToIntersection<RawTypedResponseBody<SV>>]?: undefined;
|
@@ -144,7 +146,7 @@ type TypedResponseBody<SV extends AnySchemaValidator> = {
|
|
144
146
|
} | {
|
145
147
|
[K in keyof (ExclusiveSchemaCatchall<SV> & ExclusiveResponseBodyBase<SV>)]?: K extends keyof UnknownResponseBody<SV> ? UnknownResponseBody<SV>[K] : undefined;
|
146
148
|
};
|
147
|
-
type ResponseBody<SV extends AnySchemaValidator> = TypedResponseBody<SV> | (ExclusiveResponseBodyBase<SV> & SV['_ValidSchemaObject']) | (ExclusiveResponseBodyBase<SV> & UnboxedObjectSchema<SV>) | (ExclusiveResponseBodyBase<SV> & SV['string']);
|
149
|
+
type ResponseBody<SV extends AnySchemaValidator> = TypedResponseBody<SV> | (ExclusiveResponseBodyBase<SV> & SV['_ValidSchemaObject']) | (ExclusiveResponseBodyBase<SV> & UnboxedObjectSchema<SV>) | (ExclusiveResponseBodyBase<SV> & SV['string']) | (ExclusiveResponseBodyBase<SV> & SV['number']) | (ExclusiveResponseBodyBase<SV> & SV['boolean']) | (ExclusiveResponseBodyBase<SV> & SV['array']) | (ExclusiveResponseBodyBase<SV> & SV['file']);
|
148
150
|
/**
|
149
151
|
* Type representing the responses object in a request.
|
150
152
|
*
|
@@ -168,7 +170,7 @@ type TextBody<SV extends AnySchemaValidator> = {
|
|
168
170
|
};
|
169
171
|
type FileBody<SV extends AnySchemaValidator> = {
|
170
172
|
contentType?: 'application/octet-stream' | 'application/pdf' | 'application/vnd.ms-excel' | 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' | 'application/msword' | 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' | 'application/zip' | 'image/jpeg' | 'image/png' | 'image/gif' | 'audio/mpeg' | 'audio/wav' | 'video/mp4' | string;
|
171
|
-
file: SV['file']
|
173
|
+
file: SV['file'];
|
172
174
|
};
|
173
175
|
/**
|
174
176
|
* Type representing the body in a request.
|
@@ -291,9 +293,9 @@ type ResponseCompiledSchema = {
|
|
291
293
|
* @template ResponseSchemas - A type for response schemas, defaulting to ResponsesObject.
|
292
294
|
* @template QuerySchema - A type for query schemas, defaulting to QueryObject.
|
293
295
|
*/
|
294
|
-
type PathParamHttpContractDetails<SV extends AnySchemaValidator, Path extends `/${string}` = `/${string}`, ParamsSchema extends ParamsObject<SV> = ParamsObject<SV>, ResponseSchemas extends ResponsesObject<SV> = ResponsesObject<SV>, QuerySchema extends QueryObject<SV> = QueryObject<SV>, ReqHeaders extends HeadersObject<SV> = HeadersObject<SV>, ResHeaders extends HeadersObject<SV> = HeadersObject<SV>, BaseRequest = unknown> = {
|
296
|
+
type PathParamHttpContractDetails<SV extends AnySchemaValidator, Name extends string = string, Path extends `/${string}` = `/${string}`, ParamsSchema extends ParamsObject<SV> = ParamsObject<SV>, ResponseSchemas extends ResponsesObject<SV> = ResponsesObject<SV>, QuerySchema extends QueryObject<SV> = QueryObject<SV>, ReqHeaders extends HeadersObject<SV> = HeadersObject<SV>, ResHeaders extends HeadersObject<SV> = HeadersObject<SV>, BaseRequest = unknown> = {
|
295
297
|
/** Name of the contract */
|
296
|
-
readonly name:
|
298
|
+
readonly name: StringWithoutSlash<Name>;
|
297
299
|
/** Summary of the contract */
|
298
300
|
readonly summary: string;
|
299
301
|
/** Response schemas for the contract */
|
@@ -330,7 +332,7 @@ type PathParamHttpContractDetails<SV extends AnySchemaValidator, Path extends `/
|
|
330
332
|
* @template BodySchema - A type for the body schema, defaulting to Body.
|
331
333
|
* @template QuerySchema - A type for query schemas, defaulting to QueryObject.
|
332
334
|
*/
|
333
|
-
type HttpContractDetails<SV extends AnySchemaValidator, Path extends `/${string}` = `/${string}`, ParamsSchema extends ParamsObject<SV> = ParamsObject<SV>, ResponseSchemas extends ResponsesObject<SV> = ResponsesObject<SV>, BodySchema extends Body<SV> = Body<SV>, QuerySchema extends QueryObject<SV> = QueryObject<SV>, ReqHeaders extends HeadersObject<SV> = HeadersObject<SV>, ResHeaders extends HeadersObject<SV> = HeadersObject<SV>, BaseRequest = unknown> = PathParamHttpContractDetails<SV, Path, ParamsSchema, ResponseSchemas, QuerySchema, ReqHeaders, ResHeaders, BaseRequest> & (BodySchema extends SV['_SchemaCatchall'] ? {
|
335
|
+
type HttpContractDetails<SV extends AnySchemaValidator, Name extends string = string, Path extends `/${string}` = `/${string}`, ParamsSchema extends ParamsObject<SV> = ParamsObject<SV>, ResponseSchemas extends ResponsesObject<SV> = ResponsesObject<SV>, BodySchema extends Body<SV> = Body<SV>, QuerySchema extends QueryObject<SV> = QueryObject<SV>, ReqHeaders extends HeadersObject<SV> = HeadersObject<SV>, ResHeaders extends HeadersObject<SV> = HeadersObject<SV>, BaseRequest = unknown> = PathParamHttpContractDetails<SV, Name, Path, ParamsSchema, ResponseSchemas, QuerySchema, ReqHeaders, ResHeaders, BaseRequest> & (BodySchema extends SV['_SchemaCatchall'] ? {
|
334
336
|
/** Required body schema for body-based methods for the contract */
|
335
337
|
readonly body: BodySchema;
|
336
338
|
} : BodySchema extends JsonBody<SV> ? {
|
@@ -366,11 +368,11 @@ type HttpContractDetails<SV extends AnySchemaValidator, Path extends `/${string}
|
|
366
368
|
* @template ReqHeaders - A type for request headers, defaulting to HeadersObject.
|
367
369
|
* @template ResHeaders - A type for response headers, defaulting to HeadersObject.
|
368
370
|
*/
|
369
|
-
type MiddlewareContractDetails<SV extends AnySchemaValidator, Path extends `/${string}` = `/${string}`, ParamsSchema extends ParamsObject<SV> = ParamsObject<SV>, ResponseSchemas extends ResponsesObject<SV> = ResponsesObject<SV>, BodySchema extends Body<SV> = Body<SV>, QuerySchema extends QueryObject<SV> = QueryObject<SV>, ReqHeaders extends HeadersObject<SV> = HeadersObject<SV>, ResHeaders extends HeadersObject<SV> = HeadersObject<SV>, BaseRequest = unknown> = Omit<Partial<HttpContractDetails<SV, Path, ParamsSchema, ResponseSchemas, BodySchema, QuerySchema, ReqHeaders, ResHeaders, BaseRequest>>, '
|
371
|
+
type MiddlewareContractDetails<SV extends AnySchemaValidator, Name extends string = string, Path extends `/${string}` = `/${string}`, ParamsSchema extends ParamsObject<SV> = ParamsObject<SV>, ResponseSchemas extends ResponsesObject<SV> = ResponsesObject<SV>, BodySchema extends Body<SV> = Body<SV>, QuerySchema extends QueryObject<SV> = QueryObject<SV>, ReqHeaders extends HeadersObject<SV> = HeadersObject<SV>, ResHeaders extends HeadersObject<SV> = HeadersObject<SV>, BaseRequest = unknown> = Omit<Partial<HttpContractDetails<SV, Name, Path, ParamsSchema, ResponseSchemas, BodySchema, QuerySchema, ReqHeaders, ResHeaders, BaseRequest>>, 'responses'>;
|
370
372
|
/**
|
371
373
|
* Utility for different Contract Detail types
|
372
374
|
*/
|
373
|
-
type ContractDetails<SV extends AnySchemaValidator, ContractMethod extends Method, Path extends `/${string}`, ParamsSchema extends ParamsObject<SV>, ResponseSchemas extends ResponsesObject<SV>, BodySchema extends Body<SV>, QuerySchema extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, BaseRequest> = ContractMethod extends PathParamMethod ? PathParamHttpContractDetails<SV, Path, ParamsSchema, ResponseSchemas, QuerySchema, ReqHeaders, ResHeaders, BaseRequest> : ContractMethod extends HttpMethod ? HttpContractDetails<SV, Path, ParamsSchema, ResponseSchemas, BodySchema, QuerySchema, ReqHeaders, ResHeaders, BaseRequest> : ContractMethod extends 'middleware' ? MiddlewareContractDetails<SV, Path, ParamsSchema, ResponseSchemas, BodySchema, QuerySchema, ReqHeaders, ResHeaders, BaseRequest> : never;
|
375
|
+
type ContractDetails<SV extends AnySchemaValidator, Name extends string, ContractMethod extends Method, Path extends `/${string}`, ParamsSchema extends ParamsObject<SV>, ResponseSchemas extends ResponsesObject<SV>, BodySchema extends Body<SV>, QuerySchema extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, BaseRequest> = ContractMethod extends PathParamMethod ? PathParamHttpContractDetails<SV, Name, Path, ParamsSchema, ResponseSchemas, QuerySchema, ReqHeaders, ResHeaders, BaseRequest> : ContractMethod extends HttpMethod ? HttpContractDetails<SV, Name, Path, ParamsSchema, ResponseSchemas, BodySchema, QuerySchema, ReqHeaders, ResHeaders, BaseRequest> : ContractMethod extends 'middleware' ? MiddlewareContractDetails<SV, Name, Path, ParamsSchema, ResponseSchemas, BodySchema, QuerySchema, ReqHeaders, ResHeaders, BaseRequest> : never;
|
374
376
|
|
375
377
|
/**
|
376
378
|
* Interface representing the context of a request.
|
@@ -446,8 +448,8 @@ interface ForklaunchStatusResponse<ResBody> {
|
|
446
448
|
* @returns {T} - The sent response.
|
447
449
|
*/
|
448
450
|
send: {
|
449
|
-
(body?: ResBody extends AsyncGenerator<unknown> ? never : ResBody | null, close_connection?: boolean): boolean;
|
450
|
-
<U>(body?: ResBody extends AsyncGenerator<unknown> ? never : ResBody | null, close_connection?: boolean): U;
|
451
|
+
(body?: ResBody extends AsyncGenerator<unknown> ? never : ResBody extends Blob ? Blob | File | Buffer | ArrayBuffer | NodeJS.ReadableStream : ResBody | null, close_connection?: boolean): boolean;
|
452
|
+
<U>(body?: ResBody extends AsyncGenerator<unknown> ? never : ResBody extends Blob ? Blob | File | Buffer | ArrayBuffer | NodeJS.ReadableStream : ResBody | null, close_connection?: boolean): U;
|
451
453
|
};
|
452
454
|
/**
|
453
455
|
* Sends a JSON response.
|
@@ -593,7 +595,7 @@ interface ExpressLikeHandler<SV extends AnySchemaValidator, P extends ParamsDict
|
|
593
595
|
type MapParamsSchema<SV extends AnySchemaValidator, P extends ParamsObject<SV>> = MapSchema<SV, P> extends infer Params ? unknown extends Params ? ParamsDictionary : Params : ParamsDictionary;
|
594
596
|
type ExtractContentType<SV extends AnySchemaValidator, T extends ResponseBody<SV> | unknown> = T extends {
|
595
597
|
contentType: string;
|
596
|
-
} ? T['contentType'] : T extends JsonBody<SV> ? 'application/json' : T extends TextBody<SV> ? 'text/plain' : T extends FileBody<SV> ? 'application/octet-stream' : T extends ServerSentEventBody<SV> ? 'text/event-stream' : T extends UnknownResponseBody<SV> ? 'application/json' : T extends SV['
|
598
|
+
} ? T['contentType'] : T extends JsonBody<SV> ? 'application/json' : T extends TextBody<SV> ? 'text/plain' : T extends FileBody<SV> ? 'application/octet-stream' : T extends ServerSentEventBody<SV> ? 'text/event-stream' : T extends UnknownResponseBody<SV> ? 'application/json' : T extends SV['file'] ? 'application/octet-stream' : 'text/plain';
|
597
599
|
type ExtractResponseBody<SV extends AnySchemaValidator, T extends ResponseBody<SV> | unknown> = T extends JsonBody<SV> ? MapSchema<SV, T['json']> : T extends TextBody<SV> ? MapSchema<SV, T['text']> : T extends FileBody<SV> ? File | Blob : T extends ServerSentEventBody<SV> ? AsyncGenerator<MapSchema<SV, T['event']>> : T extends UnknownResponseBody<SV> ? MapSchema<SV, T['schema']> : MapSchema<SV, T>;
|
598
600
|
type MapResBodyMapSchema<SV extends AnySchemaValidator, ResBodyMap extends ResponsesObject<SV>> = unknown extends ResBodyMap ? ForklaunchResErrors : {
|
599
601
|
[K in keyof ResBodyMap]: ExtractResponseBody<SV, ResBodyMap[K]>;
|
@@ -629,9 +631,15 @@ type ExpressLikeSchemaHandler<SV extends AnySchemaValidator, P extends ParamsObj
|
|
629
631
|
*/
|
630
632
|
type ExpressLikeSchemaAuthMapper<SV extends AnySchemaValidator, P extends ParamsObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, BaseRequest> = ExpressLikeAuthMapper<SV, MapParamsSchema<SV, P>, MapReqBodySchema<SV, ReqBody>, MapReqQuerySchema<SV, ReqQuery>, MapReqHeadersSchema<SV, ReqHeaders>, BaseRequest>;
|
631
633
|
type ExpressLikeAuthMapper<SV extends AnySchemaValidator, P extends ParamsDictionary, ReqBody extends Record<string, unknown>, ReqQuery extends ParsedQs, ReqHeaders extends Record<string, string>, BaseRequest> = (sub: string, req?: ResolvedForklaunchRequest<SV, P, ReqBody, ReqQuery, ReqHeaders, BaseRequest>) => Set<string> | Promise<Set<string>>;
|
632
|
-
type
|
633
|
-
|
634
|
-
}
|
634
|
+
type LiveTypeFunctionRequestInit<SV extends AnySchemaValidator, P extends ParamsObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>> = MakePropertyOptionalIfChildrenOptional<(ParamsObject<SV> extends P ? unknown : {
|
635
|
+
params: MapSchema<SV, P>;
|
636
|
+
}) & (Body<SV> extends ReqBody ? unknown : {
|
637
|
+
body: MapSchema<SV, ReqBody>;
|
638
|
+
}) & (QueryObject<SV> extends ReqQuery ? unknown : {
|
639
|
+
query: MapSchema<SV, ReqQuery>;
|
640
|
+
}) & (HeadersObject<SV> extends ReqHeaders ? unknown : {
|
641
|
+
headers: MapSchema<SV, ReqHeaders>;
|
642
|
+
})>;
|
635
643
|
/**
|
636
644
|
* Represents a live type function for the SDK.
|
637
645
|
*
|
@@ -645,15 +653,38 @@ type RemapFileBody<T> = T extends Record<string, unknown> ? {
|
|
645
653
|
* @template ResHeaders - A type for the response headers.
|
646
654
|
*
|
647
655
|
*/
|
648
|
-
type LiveTypeFunction<SV extends AnySchemaValidator, Route extends string, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV
|
649
|
-
|
650
|
-
}
|
651
|
-
body:
|
652
|
-
}
|
653
|
-
|
654
|
-
}
|
655
|
-
|
656
|
-
}
|
656
|
+
type LiveTypeFunction<SV extends AnySchemaValidator, Route extends string, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, ContractMethod extends Method> = (route: SanitizePathSlashes<Route>, ...reqInit: Prettify<Omit<RequestInit, 'method' | 'body' | 'query' | 'headers' | 'params'> & {
|
657
|
+
method: Uppercase<ContractMethod>;
|
658
|
+
} & LiveTypeFunctionRequestInit<SV, P, ReqBody, ReqQuery, ReqHeaders>> extends infer ReqInit ? ReqInit extends {
|
659
|
+
body: unknown;
|
660
|
+
} | {
|
661
|
+
params: unknown;
|
662
|
+
} | {
|
663
|
+
query: unknown;
|
664
|
+
} | {
|
665
|
+
headers: unknown;
|
666
|
+
} ? [reqInit: ReqInit] : [reqInit?: ReqInit] : never) => Promise<Prettify<SdkResponse<SV, ResponsesObject<SV> extends ResBodyMap ? Record<number, unknown> : ResBodyMap, ForklaunchResHeaders extends ResHeaders ? unknown : MapSchema<SV, ResHeaders>>>>;
|
667
|
+
/**
|
668
|
+
* Represents a live type function for the SDK.
|
669
|
+
*
|
670
|
+
* @template SV - A type that extends AnySchemaValidator.
|
671
|
+
* @template P - A type for request parameters.
|
672
|
+
* @template ResBodyMap - A type for response schemas.
|
673
|
+
* @template ReqBody - A type for the request body.
|
674
|
+
* @template ReqQuery - A type for the request query.
|
675
|
+
* @template ReqHeaders - A type for the request headers.
|
676
|
+
* @template ResHeaders - A type for the response headers.
|
677
|
+
*
|
678
|
+
*/
|
679
|
+
type LiveSdkFunction<SV extends AnySchemaValidator, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>> = (...reqInit: Prettify<Omit<RequestInit, 'method' | 'body' | 'query' | 'headers' | 'params'> & LiveTypeFunctionRequestInit<SV, P, ReqBody, ReqQuery, ReqHeaders>> extends infer ReqInit ? ReqInit extends {
|
680
|
+
body: unknown;
|
681
|
+
} | {
|
682
|
+
params: unknown;
|
683
|
+
} | {
|
684
|
+
query: unknown;
|
685
|
+
} | {
|
686
|
+
headers: unknown;
|
687
|
+
} ? [reqInit: ReqInit] : [reqInit?: ReqInit] : never) => Promise<Prettify<SdkResponse<SV, ResponsesObject<SV> extends ResBodyMap ? Record<number, unknown> : ResBodyMap, ForklaunchResHeaders extends ResHeaders ? unknown : MapSchema<SV, ResHeaders>>>>;
|
657
688
|
/**
|
658
689
|
* Represents a basic SDK Response object.
|
659
690
|
*
|
@@ -709,12 +740,6 @@ type ResponseShape<Params, Headers, Query, Body> = {
|
|
709
740
|
query: Query;
|
710
741
|
body: Body;
|
711
742
|
};
|
712
|
-
/**
|
713
|
-
* Acts as a container to collect API routes for export to SDK consumers.
|
714
|
-
*/
|
715
|
-
type ApiClient<Routes extends Record<string, unknown>> = {
|
716
|
-
[Key in keyof Routes]: Routes[Key] extends (...args: never[]) => infer ReturnType ? Omit<ReturnType, 'router'> : never;
|
717
|
-
};
|
718
743
|
/**
|
719
744
|
* Represents a path match.
|
720
745
|
*/
|
@@ -733,6 +758,14 @@ interface ForklaunchRouter<SV extends AnySchemaValidator> {
|
|
733
758
|
basePath: `/${string}`;
|
734
759
|
/** The routes associated with the router */
|
735
760
|
routes: ForklaunchRoute<SV>[];
|
761
|
+
/** Nested routers */
|
762
|
+
routers: ForklaunchRouter<SV>[];
|
763
|
+
/** Nested route map */
|
764
|
+
fetchMap: Record<string, unknown>;
|
765
|
+
/** The SDK for the router */
|
766
|
+
sdk: Record<string, unknown>;
|
767
|
+
/** The name of the SDK for the router */
|
768
|
+
sdkName?: string;
|
736
769
|
}
|
737
770
|
/**
|
738
771
|
* Interface representing a Forklaunch route.
|
@@ -751,84 +784,227 @@ interface ForklaunchRoute<SV extends AnySchemaValidator> {
|
|
751
784
|
}
|
752
785
|
|
753
786
|
type ContractDetailsExpressLikeSchemaHandler<SV extends AnySchemaValidator, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, BaseRequest, BaseResponse, NextFunction> = ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>;
|
754
|
-
type TypedHandler<SV extends AnySchemaValidator, ContractMethod extends Method, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, BaseRequest, BaseResponse, NextFunction> = {
|
787
|
+
type TypedHandler<SV extends AnySchemaValidator, Name extends string, ContractMethod extends Method, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, BaseRequest, BaseResponse, NextFunction> = {
|
755
788
|
_typedHandler: true;
|
756
789
|
_path: Path | undefined;
|
757
|
-
contractDetails: ContractDetails<SV, ContractMethod, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, BaseRequest>;
|
790
|
+
contractDetails: ContractDetails<SV, Name, ContractMethod, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, BaseRequest>;
|
758
791
|
handlers: ContractDetailsExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>[];
|
759
792
|
};
|
760
|
-
type ExpressLikeTypedHandler<SV extends AnySchemaValidator, ContractMethod extends Method, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, BaseRequest, BaseResponse, NextFunction> = {
|
793
|
+
type ExpressLikeTypedHandler<SV extends AnySchemaValidator, Name extends string, ContractMethod extends Method, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, BaseRequest, BaseResponse, NextFunction> = {
|
761
794
|
_typedHandler: true;
|
762
795
|
_path: Path | undefined;
|
763
|
-
contractDetails: Omit<ContractDetails<SV, ContractMethod, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, BaseRequest>, 'auth'>;
|
796
|
+
contractDetails: Omit<ContractDetails<SV, Name, ContractMethod, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, BaseRequest>, 'auth'>;
|
764
797
|
handlers: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>[];
|
765
798
|
};
|
766
799
|
|
767
|
-
interface LiveTypeRouteDefinition<SV extends AnySchemaValidator, BasePath extends `/${string}`, ContractMethod extends Method, BaseRequest, BaseResponse, NextFunction
|
768
|
-
|
769
|
-
|
800
|
+
interface LiveTypeRouteDefinition<SV extends AnySchemaValidator, BasePath extends `/${string}`, ContractMethod extends Method, RouterHandler, Internal extends ExpressLikeRouter<RouterHandler, Internal>, BaseRequest, BaseResponse, NextFunction, ChainableRouter extends {
|
801
|
+
fetchMap: object;
|
802
|
+
sdk: object;
|
803
|
+
}> {
|
804
|
+
<Name extends string, Path extends `/${string}`, SuppliedPath extends Path, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>>(path: PathMatch<SuppliedPath, Path>, typedHandler: TypedHandler<SV, Name, ContractMethod, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>): ChainableRouter & {
|
805
|
+
fetchMap: Prettify<ChainableRouter['fetchMap'] & Record<SanitizePathSlashes<`${BasePath}${Path}`>, LiveTypeFunction<SV, SanitizePathSlashes<`${BasePath}${Path}`>, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, ContractMethod>>>;
|
806
|
+
sdk: Prettify<ChainableRouter['sdk'] & Record<PrettyCamelCase<Name>, LiveSdkFunction<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders>>>;
|
770
807
|
};
|
771
|
-
<Path extends `/${string}`, SuppliedPath extends Path, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>>(path: PathMatch<SuppliedPath, Path>, middleware: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>, ...middlewareAndTypedHandler: [
|
808
|
+
<Name extends string, Path extends `/${string}`, SuppliedPath extends Path, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>>(path: PathMatch<SuppliedPath, Path>, middleware: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>, ...middlewareAndTypedHandler: [
|
772
809
|
...ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>[],
|
773
|
-
TypedHandler<SV, ContractMethod, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>
|
774
|
-
]): {
|
775
|
-
[
|
810
|
+
TypedHandler<SV, Name, ContractMethod, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>
|
811
|
+
]): ChainableRouter & {
|
812
|
+
fetchMap: Prettify<ChainableRouter['fetchMap'] & Record<SanitizePathSlashes<`${BasePath}${Path}`>, LiveTypeFunction<SV, SanitizePathSlashes<`${BasePath}${Path}`>, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, ContractMethod>>>;
|
813
|
+
sdk: Prettify<ChainableRouter['sdk'] & Record<PrettyCamelCase<Name>, LiveSdkFunction<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders>>>;
|
776
814
|
};
|
777
|
-
<Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>>(path: Path, contractDetails: ContractDetails<SV, ContractMethod, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, BaseRequest>, ...middleware: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>[]): {
|
778
|
-
[
|
815
|
+
<Name extends string, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>>(path: Path, contractDetails: ContractDetails<SV, Name, ContractMethod, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, BaseRequest>, ...middleware: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>[]): ChainableRouter & {
|
816
|
+
fetchMap: Prettify<ChainableRouter['fetchMap'] & Record<SanitizePathSlashes<`${BasePath}${Path}`>, LiveTypeFunction<SV, SanitizePathSlashes<`${BasePath}${Path}`>, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, ContractMethod>>>;
|
817
|
+
sdk: Prettify<ChainableRouter['sdk'] & Record<PrettyCamelCase<Name>, LiveSdkFunction<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders>>>;
|
779
818
|
};
|
780
819
|
}
|
781
|
-
interface TypedMiddlewareDefinition<ChainableRouter, SV extends AnySchemaValidator, BaseRequest, BaseResponse, NextFunction> {
|
782
|
-
|
783
|
-
<Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>>(typedHandler: TypedHandler<SV, 'middleware', Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>): ChainableRouter;
|
784
|
-
<Path extends `/${string}`,
|
820
|
+
interface TypedMiddlewareDefinition<ChainableRouter, SV extends AnySchemaValidator, BaseRequest, BaseResponse, NextFunction, RouterHandler> {
|
821
|
+
(middleware: RouterHandler, ...otherMiddleware: RouterHandler[]): ChainableRouter;
|
822
|
+
<Name extends string, Path extends `/${string}`, SuppliedPath extends Path, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>>(path: PathMatch<SuppliedPath, Path>, typedHandler: TypedHandler<SV, Name, 'middleware', Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>): ChainableRouter;
|
823
|
+
<Name extends string, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>>(typedHandler: TypedHandler<SV, Name, 'middleware', Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>): ChainableRouter;
|
824
|
+
<Name extends string, Path extends `/${string}`, SuppliedPath extends Path, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>>(path: PathMatch<SuppliedPath, Path>, middleware: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>, ...middlewareAndTypedHandler: [
|
785
825
|
...ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>[],
|
786
|
-
TypedHandler<SV, 'middleware', Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>
|
826
|
+
TypedHandler<SV, Name, 'middleware', Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>
|
787
827
|
]): ChainableRouter;
|
788
|
-
<Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>>(middleware: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>, ...middlewareAndTypedHandler: [
|
828
|
+
<Name extends string, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>>(middleware: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>, ...middlewareAndTypedHandler: [
|
789
829
|
...ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>[],
|
790
|
-
TypedHandler<SV, 'middleware', Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>
|
830
|
+
TypedHandler<SV, Name, 'middleware', Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>
|
791
831
|
]): ChainableRouter;
|
792
|
-
<Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>>(path: Path, contractDetails: ContractDetails<SV, 'middleware', Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, BaseRequest>, middleware: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>, ...middlewares: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>[]): ChainableRouter;
|
793
|
-
<Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>>(contractDetails: ContractDetails<SV, 'middleware', Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, BaseRequest>, middleware: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>, ...middlewares: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>[]): ChainableRouter;
|
832
|
+
<Name extends string, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>>(path: Path, contractDetails: ContractDetails<SV, Name, 'middleware', Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, BaseRequest>, middleware: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>, ...middlewares: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>[]): ChainableRouter;
|
833
|
+
<Name extends string, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>>(contractDetails: ContractDetails<SV, Name, 'middleware', Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, BaseRequest>, middleware: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>, ...middlewares: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>[]): ChainableRouter;
|
794
834
|
}
|
795
|
-
interface TypedNestableMiddlewareDefinition<ChainableRouter
|
796
|
-
|
797
|
-
|
798
|
-
|
799
|
-
|
800
|
-
|
801
|
-
|
802
|
-
|
803
|
-
|
804
|
-
|
805
|
-
|
806
|
-
|
807
|
-
|
835
|
+
interface TypedNestableMiddlewareDefinition<ChainableRouter extends {
|
836
|
+
fetchMap: object;
|
837
|
+
basePath: `/${string}`;
|
838
|
+
sdk: Record<string, unknown>;
|
839
|
+
}, RouterHandler, Internal extends ExpressLikeRouter<RouterHandler, Internal>, SV extends AnySchemaValidator, BaseRequest, BaseResponse, NextFunction> extends TypedMiddlewareDefinition<ChainableRouter, SV, BaseRequest, BaseResponse, NextFunction, RouterHandler> {
|
840
|
+
(middleware: RouterHandler, ...otherMiddleware: RouterHandler[]): ChainableRouter;
|
841
|
+
<Router extends ConstrainedForklaunchRouter<SV, RouterHandler>>(router: Router): ChainableRouter & {
|
842
|
+
fetchMap: Prettify<ChainableRouter['fetchMap'] & {
|
843
|
+
[Key in keyof Router['fetchMap'] as Key extends string ? SanitizePathSlashes<`${ChainableRouter['basePath']}${Key}`> : never]: Router['fetchMap'][Key];
|
844
|
+
}>;
|
845
|
+
sdk: Prettify<ChainableRouter['sdk'] & {
|
846
|
+
[K in PrettyCamelCase<Router['sdkName'] extends string ? Router['sdkName'] : Router['basePath']>]: Prettify<Router['sdk']>;
|
847
|
+
}>;
|
848
|
+
};
|
849
|
+
<Router extends ConstrainedForklaunchRouter<SV, RouterHandler>>(middlewareOrRouter: RouterHandler | Router, ...otherMiddlewareOrRouters: [...(RouterHandler | Router)[]]): ChainableRouter & {
|
850
|
+
fetchMap: Prettify<ChainableRouter['fetchMap'] & {
|
851
|
+
[Key in keyof Router['fetchMap'] as Key extends string ? SanitizePathSlashes<`${ChainableRouter['basePath']}${Key}`> : never]: Router['fetchMap'][Key];
|
852
|
+
}>;
|
853
|
+
sdk: Prettify<ChainableRouter['sdk'] & {
|
854
|
+
[K in PrettyCamelCase<Router['sdkName'] extends string ? Router['sdkName'] : Router['basePath']>]: Prettify<Router['sdk']>;
|
855
|
+
}>;
|
856
|
+
};
|
857
|
+
<Router extends ConstrainedForklaunchRouter<SV, RouterHandler>>(path: Router['basePath'], router: Router): ChainableRouter & {
|
858
|
+
fetchMap: Prettify<ChainableRouter['fetchMap'] & {
|
859
|
+
[Key in keyof Router['fetchMap'] as Key extends string ? SanitizePathSlashes<`${ChainableRouter['basePath']}${Key}`> : never]: Router['fetchMap'][Key];
|
860
|
+
}>;
|
861
|
+
sdk: Prettify<ChainableRouter['sdk'] & {
|
862
|
+
[K in PrettyCamelCase<Router['sdkName'] extends string ? Router['sdkName'] : Router['basePath']>]: Prettify<Router['sdk']>;
|
863
|
+
}>;
|
864
|
+
};
|
865
|
+
<Name extends string, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, Router extends ConstrainedForklaunchRouter<SV, RouterHandler>>(path: `/${string}` extends Router['basePath'] ? Path : PathMatch<Path, Router['basePath']>, middleware: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction> | Router, ...middlewareAndTypedHandler: [
|
866
|
+
...(ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction> | Router)[],
|
867
|
+
TypedHandler<SV, Name, 'middleware', Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>
|
868
|
+
]): ChainableRouter & {
|
869
|
+
fetchMap: Prettify<ChainableRouter['fetchMap'] & {
|
870
|
+
[Key in keyof Router['fetchMap'] as Key extends string ? SanitizePathSlashes<`${ChainableRouter['basePath']}${Key}`> : never]: Router['fetchMap'][Key];
|
871
|
+
}>;
|
872
|
+
sdk: Prettify<ChainableRouter['sdk'] & {
|
873
|
+
[K in PrettyCamelCase<Router['sdkName'] extends string ? Router['sdkName'] : Router['basePath']>]: Prettify<Router['sdk']>;
|
874
|
+
}>;
|
875
|
+
};
|
876
|
+
<Name extends string, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, Router extends ConstrainedForklaunchRouter<SV, RouterHandler>>(middleware: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction> | Router, ...middlewareAndTypedHandler: [
|
877
|
+
...(ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction> | Router)[],
|
878
|
+
TypedHandler<SV, Name, 'middleware', Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>
|
879
|
+
]): ChainableRouter & {
|
880
|
+
fetchMap: Prettify<ChainableRouter['fetchMap'] & {
|
881
|
+
[Key in keyof Router['fetchMap'] as Key extends string ? SanitizePathSlashes<`${ChainableRouter['basePath']}${Key}`> : never]: Router['fetchMap'][Key];
|
882
|
+
}>;
|
883
|
+
sdk: Prettify<ChainableRouter['sdk'] & {
|
884
|
+
[K in PrettyCamelCase<Router['sdkName'] extends string ? Router['sdkName'] : Router['basePath']>]: Prettify<Router['sdk']>;
|
885
|
+
}>;
|
886
|
+
};
|
887
|
+
<Name extends string, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, Router extends ConstrainedForklaunchRouter<SV, RouterHandler>>(path: `/${string}` extends Router['basePath'] ? Path : PathMatch<Path, Router['basePath']>, contractDetails: ContractDetails<SV, Name, 'middleware', Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, BaseRequest>, middleware: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction> | Router, ...middlewares: (ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction> | Router)[]): ChainableRouter & {
|
888
|
+
fetchMap: Prettify<ChainableRouter['fetchMap'] & {
|
889
|
+
[Key in keyof Router['fetchMap'] as Key extends string ? SanitizePathSlashes<`${ChainableRouter['basePath']}${Key}`> : never]: Router['fetchMap'][Key];
|
890
|
+
}>;
|
891
|
+
sdk: Prettify<ChainableRouter['sdk'] & {
|
892
|
+
[K in PrettyCamelCase<Router['sdkName'] extends string ? Router['sdkName'] : Router['basePath']>]: Prettify<Router['sdk']>;
|
893
|
+
}>;
|
894
|
+
};
|
895
|
+
<Name extends string, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, Router extends ConstrainedForklaunchRouter<SV, RouterHandler>>(contractDetails: ContractDetails<SV, Name, 'middleware', Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, BaseRequest>, middleware: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction> | Router, ...middlewares: (ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction> | Router)[]): ChainableRouter & {
|
896
|
+
fetchMap: Prettify<ChainableRouter['fetchMap'] & {
|
897
|
+
[Key in keyof Router['fetchMap'] as Key extends string ? SanitizePathSlashes<`${ChainableRouter['basePath']}${Key}`> : never]: Router['fetchMap'][Key];
|
898
|
+
}>;
|
899
|
+
sdk: Prettify<ChainableRouter['sdk'] & {
|
900
|
+
[K in PrettyCamelCase<Router['sdkName'] extends string ? Router['sdkName'] : Router['basePath']>]: Prettify<Router['sdk']>;
|
901
|
+
}>;
|
902
|
+
};
|
808
903
|
}
|
809
|
-
type ContractDetailsOrMiddlewareOrTypedHandler<SV extends AnySchemaValidator, ContractMethod extends Method, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, BaseRequest, BaseResponse, NextFunction> = ContractDetails<SV, ContractMethod, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, BaseRequest> | ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction> | TypedHandler<SV, ContractMethod, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>;
|
810
|
-
type MiddlewareOrMiddlewareWithTypedHandler<SV extends AnySchemaValidator, ContractMethod extends Method, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, BaseRequest, BaseResponse, NextFunction> = ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction> | TypedHandler<SV, ContractMethod, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>;
|
904
|
+
type ContractDetailsOrMiddlewareOrTypedHandler<SV extends AnySchemaValidator, Name extends string, ContractMethod extends Method, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, BaseRequest, BaseResponse, NextFunction> = ContractDetails<SV, Name, ContractMethod, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, BaseRequest> | ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction> | TypedHandler<SV, Name, ContractMethod, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>;
|
905
|
+
type MiddlewareOrMiddlewareWithTypedHandler<SV extends AnySchemaValidator, Name extends string, ContractMethod extends Method, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, BaseRequest, BaseResponse, NextFunction> = ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction> | TypedHandler<SV, Name, ContractMethod, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>;
|
906
|
+
|
907
|
+
/**
|
908
|
+
* Extracts all fetchMaps from an array of routers and merges them
|
909
|
+
*/
|
910
|
+
type UnionedFetchMap<Routers extends readonly unknown[]> = MergeArrayOfMaps<{
|
911
|
+
[K in keyof Routers]: Routers[K] extends {
|
912
|
+
fetchMap: infer FM;
|
913
|
+
} ? FM extends Record<string, unknown> ? FM : Record<string, never> : Record<string, never>;
|
914
|
+
}>;
|
915
|
+
type FetchFunction<FetchMap> = <Path extends keyof FetchMap>(path: Path, ...reqInit: FetchMap[Path] extends TypeSafeFunction ? Parameters<FetchMap[Path]>[1] extends {
|
916
|
+
body: unknown;
|
917
|
+
} | {
|
918
|
+
query: unknown;
|
919
|
+
} | {
|
920
|
+
params: unknown;
|
921
|
+
} | {
|
922
|
+
headers: unknown;
|
923
|
+
} ? [reqInit: Parameters<FetchMap[Path]>[1]] : [reqInit?: Parameters<FetchMap[Path]>[1]] : [reqInit?: never]) => Promise<FetchMap[Path] extends TypeSafeFunction ? ReturnType<FetchMap[Path]> : never>;
|
924
|
+
/**
|
925
|
+
* Creates a client SDK type from an array of routers.
|
926
|
+
*
|
927
|
+
* This type maps over router configurations to create a unified SDK client interface.
|
928
|
+
* Each router can be either:
|
929
|
+
* - A direct object with `sdkName` and `sdk` properties
|
930
|
+
* - A function that returns an object with `sdkName` and `sdk` properties
|
931
|
+
*
|
932
|
+
* @template Routers - Array of router configurations or router factory functions
|
933
|
+
* @template {string} Routers[K]['sdkName'] - The name of the SDK for each router
|
934
|
+
* @template {Record<string, unknown>} Routers[K]['sdk'] - The SDK methods/endpoints for each router
|
935
|
+
*
|
936
|
+
* @example
|
937
|
+
* ```typescript
|
938
|
+
* const routers = [
|
939
|
+
* { sdkName: 'user', sdk: { create: () => {}, get: () => {} } },
|
940
|
+
* () => ({ sdkName: 'auth', sdk: { login: () => {}, logout: () => {} } })
|
941
|
+
* ];
|
942
|
+
*
|
943
|
+
* type Client = SdkClient<typeof routers>;
|
944
|
+
* // Result: { user: { create: () => {}, get: () => {} }, auth: { login: () => {}, logout: () => {} } }
|
945
|
+
* ```
|
946
|
+
*/
|
947
|
+
type SdkClient<Routers extends ({
|
948
|
+
basePath: string;
|
949
|
+
sdkName?: string;
|
950
|
+
sdk: Record<string, unknown>;
|
951
|
+
} | ((...args: never[]) => {
|
952
|
+
basePath: string;
|
953
|
+
sdkName?: string;
|
954
|
+
sdk: Record<string, unknown>;
|
955
|
+
}))[]> = {
|
956
|
+
fetch: UnionedFetchMap<Routers> extends infer MergedFetchMap ? FetchFunction<MergedFetchMap> : never;
|
957
|
+
sdk: UnionToIntersectionChildren<{
|
958
|
+
[K in Routers[number] as PrettyCamelCase<K extends (...args: never[]) => {
|
959
|
+
sdkName?: infer SdkName;
|
960
|
+
basePath: infer BasePath;
|
961
|
+
} ? string extends SdkName ? BasePath : SdkName : K extends {
|
962
|
+
sdkName?: infer SdkName;
|
963
|
+
basePath: infer BasePath;
|
964
|
+
} ? string extends SdkName ? BasePath : SdkName : never>]: K extends (...args: never[]) => {
|
965
|
+
sdk: infer Sdk;
|
966
|
+
} ? Prettify<Sdk> : K extends {
|
967
|
+
sdk: infer Sdk;
|
968
|
+
} ? Prettify<Sdk> : never;
|
969
|
+
}>;
|
970
|
+
};
|
811
971
|
|
812
972
|
/**
|
813
973
|
* A class that represents an Express-like router.
|
814
974
|
*/
|
815
|
-
declare class ForklaunchExpressLikeRouter<SV extends AnySchemaValidator, BasePath extends `/${string}`, RouterHandler, Internal extends ExpressLikeRouter<RouterHandler, Internal>, BaseRequest, BaseResponse, NextFunction> implements ConstrainedForklaunchRouter<SV, RouterHandler> {
|
975
|
+
declare class ForklaunchExpressLikeRouter<SV extends AnySchemaValidator, BasePath extends `/${string}`, RouterHandler, Internal extends ExpressLikeRouter<RouterHandler, Internal>, BaseRequest, BaseResponse, NextFunction, FetchMap extends Record<string, unknown> = EmptyObject, Sdk extends Record<string, unknown> = EmptyObject, SdkName extends string = PrettyCamelCase<BasePath>> implements ConstrainedForklaunchRouter<SV, RouterHandler> {
|
816
976
|
#private;
|
977
|
+
readonly basePath: BasePath;
|
817
978
|
readonly schemaValidator: SV;
|
818
979
|
readonly internal: Internal;
|
819
980
|
readonly postEnrichMiddleware: RouterHandler[];
|
820
981
|
readonly openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>;
|
982
|
+
readonly sdkName?: SdkName | undefined;
|
821
983
|
requestHandler: RouterHandler;
|
822
984
|
routers: ForklaunchRouter<SV>[];
|
823
|
-
|
824
|
-
|
825
|
-
|
826
|
-
|
827
|
-
|
828
|
-
|
985
|
+
routes: ForklaunchRoute<SV>[];
|
986
|
+
fetchMap: FetchMap;
|
987
|
+
sdk: Sdk;
|
988
|
+
constructor(basePath: BasePath, schemaValidator: SV, internal: Internal, postEnrichMiddleware: RouterHandler[], openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>, sdkName?: SdkName | undefined);
|
989
|
+
/**
|
990
|
+
* Fetches a route from the route map and executes it with the given parameters.
|
991
|
+
*
|
992
|
+
* @template Path - The path type that extends keyof fetchMap and string.
|
993
|
+
* @param {Path} path - The route path
|
994
|
+
* @param {Parameters<fetchMap[Path]>[1]} [requestInit] - Optional request initialization parameters.
|
995
|
+
* @returns {Promise<ReturnType<fetchMap[Path]>>} - The result of executing the route handler.
|
996
|
+
*/
|
997
|
+
fetch: FetchFunction<this['fetchMap']>;
|
998
|
+
registerRoute<Name extends string, ContractMethod extends Method, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>>(method: ContractMethod, path: Path, registrationMethod: PathBasedHandler<RouterHandler>, contractDetailsOrMiddlewareOrTypedHandler: ContractDetailsOrMiddlewareOrTypedHandler<SV, Name, ContractMethod, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>, ...middlewareOrMiddlewareAndTypedHandler: MiddlewareOrMiddlewareWithTypedHandler<SV, Name, ContractMethod, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>[]): this & {
|
999
|
+
fetchMap: Prettify<FetchMap & Record<SanitizePathSlashes<`${BasePath}${Path}`>, LiveTypeFunction<SV, SanitizePathSlashes<`${BasePath}${Path}`>, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, ContractMethod>>>;
|
1000
|
+
sdk: Prettify<Sdk & Record<PrettyCamelCase<Name extends string ? Name : SanitizePathSlashes<`${BasePath}${Path}`>>, LiveSdkFunction<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders>>>;
|
1001
|
+
};
|
1002
|
+
registerMiddlewareHandler<Name extends string, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>>(registrationMethod: PathOrMiddlewareBasedHandler<RouterHandler>, pathOrContractDetailsOrMiddlewareOrTypedHandler: Path | ContractDetailsOrMiddlewareOrTypedHandler<SV, Name, 'middleware', Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction> | RouterHandler, contractDetailsOrMiddlewareOrTypedHandler?: ContractDetailsOrMiddlewareOrTypedHandler<SV, Name, 'middleware', Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction> | RouterHandler, ...middlewareOrMiddlewareWithTypedHandler: (MiddlewareOrMiddlewareWithTypedHandler<SV, Name, 'middleware', Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction> | RouterHandler)[]): this;
|
1003
|
+
private addRouterToSdk;
|
1004
|
+
registerNestableMiddlewareHandler<Name extends string, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>>(registrationMethod: NestableRouterBasedHandler<RouterHandler, Internal>, pathOrContractDetailsOrMiddlewareOrTypedHandler: Path | ContractDetailsOrMiddlewareOrTypedHandler<SV, Name, 'middleware', Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction> | ConstrainedForklaunchRouter<SV, RouterHandler>, contractDetailsOrMiddlewareOrTypedHandler?: ContractDetailsOrMiddlewareOrTypedHandler<SV, Name, 'middleware', Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction> | ConstrainedForklaunchRouter<SV, RouterHandler>, ...middlewareOrMiddlewareWithTypedHandler: (MiddlewareOrMiddlewareWithTypedHandler<SV, Name, 'middleware', Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction> | ConstrainedForklaunchRouter<SV, RouterHandler>)[]): this;
|
829
1005
|
use: TypedNestableMiddlewareDefinition<this, RouterHandler, Internal, SV, BaseRequest, BaseResponse, NextFunction>;
|
830
|
-
all: TypedMiddlewareDefinition<this, SV, BaseRequest, BaseResponse, NextFunction>;
|
831
|
-
connect: TypedMiddlewareDefinition<this, SV, BaseRequest, BaseResponse, NextFunction>;
|
1006
|
+
all: TypedMiddlewareDefinition<this, SV, BaseRequest, BaseResponse, NextFunction, RouterHandler>;
|
1007
|
+
connect: TypedMiddlewareDefinition<this, SV, BaseRequest, BaseResponse, NextFunction, RouterHandler>;
|
832
1008
|
/**
|
833
1009
|
* Registers a GET route with the specified contract details and handler handlers.
|
834
1010
|
*
|
@@ -842,7 +1018,7 @@ declare class ForklaunchExpressLikeRouter<SV extends AnySchemaValidator, BasePat
|
|
842
1018
|
* @param {...SchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, LocalsObj>[]} handlers - The handler handlers.
|
843
1019
|
* @returns {ExpressRouter} - The Express router.
|
844
1020
|
*/
|
845
|
-
get: LiveTypeRouteDefinition<SV, BasePath, 'get', BaseRequest, BaseResponse, NextFunction>;
|
1021
|
+
get: LiveTypeRouteDefinition<SV, BasePath, 'get', RouterHandler, Internal, BaseRequest, BaseResponse, NextFunction, this>;
|
846
1022
|
/**
|
847
1023
|
* Registers a POST route with the specified contract details and handler handlers.
|
848
1024
|
*
|
@@ -856,7 +1032,7 @@ declare class ForklaunchExpressLikeRouter<SV extends AnySchemaValidator, BasePat
|
|
856
1032
|
* @param {...SchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, LocalsObj>[]} handlers - The handler handlers.
|
857
1033
|
* @returns {ExpressRouter} - The Expxwress router.
|
858
1034
|
*/
|
859
|
-
post: LiveTypeRouteDefinition<SV, BasePath, 'post', BaseRequest, BaseResponse, NextFunction>;
|
1035
|
+
post: LiveTypeRouteDefinition<SV, BasePath, 'post', RouterHandler, Internal, BaseRequest, BaseResponse, NextFunction, this>;
|
860
1036
|
/**
|
861
1037
|
* Registers a PUT route with the specified contract details and handler handlers.
|
862
1038
|
*
|
@@ -870,7 +1046,7 @@ declare class ForklaunchExpressLikeRouter<SV extends AnySchemaValidator, BasePat
|
|
870
1046
|
* @param {...SchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, LocalsObj>[]} handlers - The handler handlers.
|
871
1047
|
* @returns {ExpressRouter} - The Express router.
|
872
1048
|
*/
|
873
|
-
put: LiveTypeRouteDefinition<SV, BasePath, 'put', BaseRequest, BaseResponse, NextFunction>;
|
1049
|
+
put: LiveTypeRouteDefinition<SV, BasePath, 'put', RouterHandler, Internal, BaseRequest, BaseResponse, NextFunction, this>;
|
874
1050
|
/**
|
875
1051
|
* Registers a PATCH route with the specified contract details and handler handlers.
|
876
1052
|
*
|
@@ -884,7 +1060,7 @@ declare class ForklaunchExpressLikeRouter<SV extends AnySchemaValidator, BasePat
|
|
884
1060
|
* @param {...SchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, LocalsObj>[]} handlers - The handler handlers.
|
885
1061
|
* @returns {ExpressRouter} - The Express router.
|
886
1062
|
*/
|
887
|
-
patch: LiveTypeRouteDefinition<SV, BasePath, 'patch', BaseRequest, BaseResponse, NextFunction>;
|
1063
|
+
patch: LiveTypeRouteDefinition<SV, BasePath, 'patch', RouterHandler, Internal, BaseRequest, BaseResponse, NextFunction, this>;
|
888
1064
|
/**
|
889
1065
|
* Registers a DELETE route with the specified contract details and handler handlers.
|
890
1066
|
*
|
@@ -898,7 +1074,7 @@ declare class ForklaunchExpressLikeRouter<SV extends AnySchemaValidator, BasePat
|
|
898
1074
|
* @param {...SchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, LocalsObj>[]} handlers - The handler handlers.
|
899
1075
|
* @returns {ExpressRouter} - The Express router.
|
900
1076
|
*/
|
901
|
-
delete: LiveTypeRouteDefinition<SV, BasePath, 'delete', BaseRequest, BaseResponse, NextFunction>;
|
1077
|
+
delete: LiveTypeRouteDefinition<SV, BasePath, 'delete', RouterHandler, Internal, BaseRequest, BaseResponse, NextFunction, this>;
|
902
1078
|
/**
|
903
1079
|
* Registers a OPTIONS route with the specified contract details and handler handlers.
|
904
1080
|
*
|
@@ -912,7 +1088,7 @@ declare class ForklaunchExpressLikeRouter<SV extends AnySchemaValidator, BasePat
|
|
912
1088
|
* @param {...SchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, LocalsObj>[]} handlers - The handler handlers.
|
913
1089
|
* @returns {ExpressRouter} - The Express router.
|
914
1090
|
*/
|
915
|
-
options: LiveTypeRouteDefinition<SV, BasePath, 'options', BaseRequest, BaseResponse, NextFunction>;
|
1091
|
+
options: LiveTypeRouteDefinition<SV, BasePath, 'options', RouterHandler, Internal, BaseRequest, BaseResponse, NextFunction, this>;
|
916
1092
|
/**
|
917
1093
|
* Registers a HEAD route with the specified contract details and handler handlers.
|
918
1094
|
*
|
@@ -926,7 +1102,7 @@ declare class ForklaunchExpressLikeRouter<SV extends AnySchemaValidator, BasePat
|
|
926
1102
|
* @param {...SchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, LocalsObj>[]} handlers - The handler handlers.
|
927
1103
|
* @returns {ExpressRouter} - The Express router.
|
928
1104
|
*/
|
929
|
-
head: LiveTypeRouteDefinition<SV, BasePath, 'head', BaseRequest, BaseResponse, NextFunction>;
|
1105
|
+
head: LiveTypeRouteDefinition<SV, BasePath, 'head', RouterHandler, Internal, BaseRequest, BaseResponse, NextFunction, this>;
|
930
1106
|
/**
|
931
1107
|
* Registers a TRACE route with the specified contract details and handler handlers.
|
932
1108
|
*
|
@@ -940,7 +1116,9 @@ declare class ForklaunchExpressLikeRouter<SV extends AnySchemaValidator, BasePat
|
|
940
1116
|
* @param {...SchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, LocalsObj>[]} handlers - The handler handlers.
|
941
1117
|
* @returns {ExpressRouter} - The Express router.
|
942
1118
|
*/
|
943
|
-
trace: LiveTypeRouteDefinition<SV, BasePath, 'trace', BaseRequest, BaseResponse, NextFunction>;
|
1119
|
+
trace: LiveTypeRouteDefinition<SV, BasePath, 'trace', RouterHandler, Internal, BaseRequest, BaseResponse, NextFunction, this>;
|
1120
|
+
protected cloneInternals(clone: this): void;
|
1121
|
+
clone(): this;
|
944
1122
|
}
|
945
1123
|
|
946
1124
|
/**
|
@@ -949,13 +1127,14 @@ declare class ForklaunchExpressLikeRouter<SV extends AnySchemaValidator, BasePat
|
|
949
1127
|
* @template SV - A type that extends AnySchemaValidator.
|
950
1128
|
* @template Server - The server type.
|
951
1129
|
*/
|
952
|
-
declare abstract class ForklaunchExpressLikeApplication<SV extends AnySchemaValidator, Server extends ExpressLikeRouter<RouterHandler, Server>, RouterHandler, BaseRequest, BaseResponse, NextFunction> extends ForklaunchExpressLikeRouter<SV, '/', RouterHandler, Server, BaseRequest, BaseResponse, NextFunction> {
|
1130
|
+
declare abstract class ForklaunchExpressLikeApplication<SV extends AnySchemaValidator, Server extends ExpressLikeRouter<RouterHandler, Server>, RouterHandler, BaseRequest, BaseResponse, NextFunction, FetchMap extends Record<string, unknown> = EmptyObject, Sdk extends Record<string, unknown> = EmptyObject, SdkName extends string = 'sdk'> extends ForklaunchExpressLikeRouter<SV, '/', RouterHandler, Server, BaseRequest, BaseResponse, NextFunction, FetchMap, Sdk, SdkName> {
|
953
1131
|
readonly schemaValidator: SV;
|
954
1132
|
readonly internal: Server;
|
955
1133
|
readonly postEnrichMiddleware: RouterHandler[];
|
956
1134
|
readonly openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>;
|
957
1135
|
readonly appOptions?: {
|
958
1136
|
cors?: CorsOptions;
|
1137
|
+
sdkName?: SdkName;
|
959
1138
|
} | undefined;
|
960
1139
|
/**
|
961
1140
|
* Creates an instance of the Application class.
|
@@ -964,6 +1143,7 @@ declare abstract class ForklaunchExpressLikeApplication<SV extends AnySchemaVali
|
|
964
1143
|
*/
|
965
1144
|
constructor(schemaValidator: SV, internal: Server, postEnrichMiddleware: RouterHandler[], openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>, appOptions?: {
|
966
1145
|
cors?: CorsOptions;
|
1146
|
+
sdkName?: SdkName;
|
967
1147
|
} | undefined);
|
968
1148
|
abstract listen(...args: unknown[]): void;
|
969
1149
|
}
|
@@ -1009,28 +1189,28 @@ declare function isForklaunchRequest<SV extends AnySchemaValidator, P extends Pa
|
|
1009
1189
|
*/
|
1010
1190
|
declare function isForklaunchRouter<SV extends AnySchemaValidator>(maybeForklaunchRouter: unknown): maybeForklaunchRouter is ForklaunchRouter<SV>;
|
1011
1191
|
|
1012
|
-
declare const delete_: <SV extends AnySchemaValidator, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, BaseRequest, BaseResponse, NextFunction>(_schemaValidator: SV, path: Path, contractDetails: PathParamHttpContractDetails<SV, Path, P, ResBodyMap, ReqQuery, ReqHeaders, ResHeaders, BaseRequest>, ...handlers: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>[]) => ExpressLikeTypedHandler<SV, "delete", Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>;
|
1192
|
+
declare const delete_: <SV extends AnySchemaValidator, Name extends string, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, BaseRequest, BaseResponse, NextFunction>(_schemaValidator: SV, path: Path, contractDetails: PathParamHttpContractDetails<SV, Name, Path, P, ResBodyMap, ReqQuery, ReqHeaders, ResHeaders, BaseRequest>, ...handlers: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>[]) => ExpressLikeTypedHandler<SV, Name, "delete", Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>;
|
1013
1193
|
|
1014
|
-
declare const get: <SV extends AnySchemaValidator, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, BaseRequest, BaseResponse, NextFunction>(_schemaValidator: SV, path: Path, contractDetails: PathParamHttpContractDetails<SV, Path, P, ResBodyMap, ReqQuery, ReqHeaders, ResHeaders, BaseRequest>, ...handlers: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>[]) => ExpressLikeTypedHandler<SV, "get", Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>;
|
1194
|
+
declare const get: <SV extends AnySchemaValidator, Name extends string, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, BaseRequest, BaseResponse, NextFunction>(_schemaValidator: SV, path: Path, contractDetails: PathParamHttpContractDetails<SV, Name, Path, P, ResBodyMap, ReqQuery, ReqHeaders, ResHeaders, BaseRequest>, ...handlers: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>[]) => ExpressLikeTypedHandler<SV, Name, "get", Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>;
|
1015
1195
|
|
1016
|
-
declare const head: <SV extends AnySchemaValidator, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, BaseRequest, BaseResponse, NextFunction>(_schemaValidator: SV, path: Path, contractDetails: PathParamHttpContractDetails<SV, Path, P, ResBodyMap, ReqQuery, ReqHeaders, ResHeaders, BaseRequest>, ...handlers: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>[]) => ExpressLikeTypedHandler<SV, "head", Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>;
|
1196
|
+
declare const head: <SV extends AnySchemaValidator, Name extends string, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, BaseRequest, BaseResponse, NextFunction>(_schemaValidator: SV, path: Path, contractDetails: PathParamHttpContractDetails<SV, Name, Path, P, ResBodyMap, ReqQuery, ReqHeaders, ResHeaders, BaseRequest>, ...handlers: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>[]) => ExpressLikeTypedHandler<SV, Name, "head", Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>;
|
1017
1197
|
|
1018
|
-
declare const middleware: <SV extends AnySchemaValidator, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, BaseRequest, BaseResponse, NextFunction>(_schemaValidator: SV, path: Path, contractDetails: MiddlewareContractDetails<SV, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, BaseRequest>, ...handlers: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>[]) => {
|
1198
|
+
declare const middleware: <SV extends AnySchemaValidator, Name extends string, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, BaseRequest, BaseResponse, NextFunction>(_schemaValidator: SV, path: Path, contractDetails: MiddlewareContractDetails<SV, Name, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, BaseRequest>, ...handlers: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>[]) => {
|
1019
1199
|
_typedHandler: true;
|
1020
1200
|
_path: Path;
|
1021
|
-
contractDetails: ContractDetails<SV, "middleware", Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, BaseRequest>;
|
1201
|
+
contractDetails: ContractDetails<SV, Name, "middleware", Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, BaseRequest>;
|
1022
1202
|
handlers: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>[];
|
1023
1203
|
};
|
1024
1204
|
|
1025
|
-
declare const options: <SV extends AnySchemaValidator, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, BaseRequest, BaseResponse, NextFunction>(_schemaValidator: SV, path: Path, contractDetails: PathParamHttpContractDetails<SV, Path, P, ResBodyMap, ReqQuery, ReqHeaders, ResHeaders, BaseRequest>, ...handlers: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>[]) => ExpressLikeTypedHandler<SV, "options", Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>;
|
1205
|
+
declare const options: <SV extends AnySchemaValidator, Name extends string, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, BaseRequest, BaseResponse, NextFunction>(_schemaValidator: SV, path: Path, contractDetails: PathParamHttpContractDetails<SV, Name, Path, P, ResBodyMap, ReqQuery, ReqHeaders, ResHeaders, BaseRequest>, ...handlers: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>[]) => ExpressLikeTypedHandler<SV, Name, "options", Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>;
|
1026
1206
|
|
1027
|
-
declare const patch: <SV extends AnySchemaValidator, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, BaseRequest, BaseResponse, NextFunction>(_schemaValidator: SV, path: Path, contractDetails: HttpContractDetails<SV, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, BaseRequest>, ...handlers: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>[]) => ExpressLikeTypedHandler<SV, "patch", Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>;
|
1207
|
+
declare const patch: <SV extends AnySchemaValidator, Name extends string, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, BaseRequest, BaseResponse, NextFunction>(_schemaValidator: SV, path: Path, contractDetails: HttpContractDetails<SV, Name, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, BaseRequest>, ...handlers: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>[]) => ExpressLikeTypedHandler<SV, Name, "patch", Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>;
|
1028
1208
|
|
1029
|
-
declare const post: <SV extends AnySchemaValidator, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, BaseRequest, BaseResponse, NextFunction>(_schemaValidator: SV, path: Path, contractDetails: HttpContractDetails<SV, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, BaseRequest>, ...handlers: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>[]) => ExpressLikeTypedHandler<SV, "post", Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>;
|
1209
|
+
declare const post: <SV extends AnySchemaValidator, Name extends string, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, BaseRequest, BaseResponse, NextFunction>(_schemaValidator: SV, path: Path, contractDetails: HttpContractDetails<SV, Name, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, BaseRequest>, ...handlers: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>[]) => ExpressLikeTypedHandler<SV, Name, "post", Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>;
|
1030
1210
|
|
1031
|
-
declare const put: <SV extends AnySchemaValidator, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, BaseRequest, BaseResponse, NextFunction>(_schemaValidator: SV, path: Path, contractDetails: HttpContractDetails<SV, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, BaseRequest>, ...handlers: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>[]) => ExpressLikeTypedHandler<SV, "put", Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>;
|
1211
|
+
declare const put: <SV extends AnySchemaValidator, Name extends string, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, BaseRequest, BaseResponse, NextFunction>(_schemaValidator: SV, path: Path, contractDetails: HttpContractDetails<SV, Name, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, BaseRequest>, ...handlers: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>[]) => ExpressLikeTypedHandler<SV, Name, "put", Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>;
|
1032
1212
|
|
1033
|
-
declare const trace: <SV extends AnySchemaValidator, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, BaseRequest, BaseResponse, NextFunction>(_schemaValidator: SV, path: Path, contractDetails: PathParamHttpContractDetails<SV, Path, P, ResBodyMap, ReqQuery, ReqHeaders, ResHeaders, BaseRequest>, ...handlers: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>[]) => ExpressLikeTypedHandler<SV, "trace", Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>;
|
1213
|
+
declare const trace: <SV extends AnySchemaValidator, Name extends string, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, BaseRequest, BaseResponse, NextFunction>(_schemaValidator: SV, path: Path, contractDetails: PathParamHttpContractDetails<SV, Name, Path, P, ResBodyMap, ReqQuery, ReqHeaders, ResHeaders, BaseRequest>, ...handlers: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>[]) => ExpressLikeTypedHandler<SV, Name, "trace", Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>;
|
1034
1214
|
|
1035
1215
|
/**
|
1036
1216
|
* Router class that sets up routes and middleware for an Express router, for use with controller/routes pattern.
|
@@ -1039,8 +1219,8 @@ declare const trace: <SV extends AnySchemaValidator, Path extends `/${string}`,
|
|
1039
1219
|
* @template contractDetails - The contract details.
|
1040
1220
|
* @template handlers - The handler middlware and handler.
|
1041
1221
|
*/
|
1042
|
-
declare function typedHandler<SV extends AnySchemaValidator, ContractMethod extends Method, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, BaseRequest, BaseResponse, NextFunction>(_schemaValidator: SV, _path: Path | undefined, _contractMethod: ContractMethod, contractDetails: ContractDetails<SV, ContractMethod, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, BaseRequest>, ...handlers: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>[]): ExpressLikeTypedHandler<SV, ContractMethod, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>;
|
1043
|
-
declare function typedHandler<SV extends AnySchemaValidator, ContractMethod extends Method, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, BaseRequest, BaseResponse, NextFunction>(_schemaValidator: SV, _contractMethod: ContractMethod, contractDetails: ContractDetails<SV, ContractMethod, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, BaseRequest>, ...handlers: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>[]): ExpressLikeTypedHandler<SV, ContractMethod, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>;
|
1222
|
+
declare function typedHandler<SV extends AnySchemaValidator, Name extends string, ContractMethod extends Method, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, BaseRequest, BaseResponse, NextFunction>(_schemaValidator: SV, _path: Path | undefined, _contractMethod: ContractMethod, contractDetails: ContractDetails<SV, Name, ContractMethod, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, BaseRequest>, ...handlers: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>[]): ExpressLikeTypedHandler<SV, Name, ContractMethod, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>;
|
1223
|
+
declare function typedHandler<SV extends AnySchemaValidator, Name extends string, ContractMethod extends Method, Path extends `/${string}`, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>, LocalsObj extends Record<string, unknown>, BaseRequest, BaseResponse, NextFunction>(_schemaValidator: SV, _contractMethod: ContractMethod, contractDetails: ContractDetails<SV, Name, ContractMethod, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, BaseRequest>, ...handlers: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>[]): ExpressLikeTypedHandler<SV, Name, ContractMethod, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, BaseRequest, BaseResponse, NextFunction>;
|
1044
1224
|
|
1045
1225
|
/**
|
1046
1226
|
* Object-map of the HTTP Status Codes. Maps from the status code, to the
|
@@ -1116,6 +1296,17 @@ declare const isServerError: (code: StatusCode) => boolean;
|
|
1116
1296
|
*/
|
1117
1297
|
declare const getCodeForStatus: (status: string) => null | StatusCode;
|
1118
1298
|
|
1299
|
+
/**
|
1300
|
+
* Generates a ModelContextProtocol server from given routers.
|
1301
|
+
*
|
1302
|
+
* @template SV - A type that extends AnySchemaValidator.
|
1303
|
+
* @param {SV} schemaValidator - The schema validator.
|
1304
|
+
* @param {string | number} port - The port on which the server is running.
|
1305
|
+
* @param {ForklaunchRouter<SV>[]} routers - The routers to include in the server.
|
1306
|
+
* @returns {McpServer} - The generated ModelContextProtocol server.
|
1307
|
+
*/
|
1308
|
+
declare function generateMcpServer(schemaValidator: ZodSchemaValidator, protocol: 'http' | 'https', host: string, port: number, version: string, routers: ForklaunchRouter<ZodSchemaValidator>[], contentTypeMap?: Record<string, string>): McpServer;
|
1309
|
+
|
1119
1310
|
/**
|
1120
1311
|
* Enhances the Express-like `send` method with additional logic for response handling and validation.
|
1121
1312
|
*
|
@@ -1153,7 +1344,10 @@ declare function enrichExpressLikeSend<SV extends AnySchemaValidator, P extends
|
|
1153
1344
|
* @param {ForklaunchRouter<SV>[]} routers - The routers to include in the Swagger document.
|
1154
1345
|
* @returns {OpenAPIObject} - The generated Swagger document.
|
1155
1346
|
*/
|
1156
|
-
declare function generateSwaggerDocument<SV extends AnySchemaValidator>(schemaValidator: SV, port: string | number, routers: ForklaunchRouter<SV>[]
|
1347
|
+
declare function generateSwaggerDocument<SV extends AnySchemaValidator>(schemaValidator: SV, protocol: 'http' | 'https', host: string, port: string | number, routers: ForklaunchRouter<SV>[], otherServers?: {
|
1348
|
+
url: string;
|
1349
|
+
description: string;
|
1350
|
+
}[]): OpenAPIObject;
|
1157
1351
|
|
1158
1352
|
/**
|
1159
1353
|
* Discriminates the body type from the given contract details and returns information
|
@@ -1235,4 +1429,4 @@ type DocsConfiguration = ({
|
|
1235
1429
|
type: 'swagger';
|
1236
1430
|
};
|
1237
1431
|
|
1238
|
-
export { ATTR_API_NAME, ATTR_CORRELATION_ID, type
|
1432
|
+
export { ATTR_API_NAME, ATTR_CORRELATION_ID, type AuthMethods, type AuthMethodsBase, type Body, type BodyObject, type ConstrainedForklaunchRouter, type ContractDetails, type ContractDetailsExpressLikeSchemaHandler, type ContractDetailsOrMiddlewareOrTypedHandler, type DocsConfiguration, type ErrorContainer, type ExpressLikeAuthMapper, type ExpressLikeHandler, type ExpressLikeRouter, type ExpressLikeSchemaAuthMapper, type ExpressLikeSchemaHandler, type ExpressLikeTypedHandler, type ExtractBody, type ExtractContentType, 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 HttpContractDetails, type HttpMethod, type JsonBody, type LiveSdkFunction, type LiveTypeFunction, type LiveTypeFunctionRequestInit, type LiveTypeRouteDefinition, type LogFn, type LoggerMeta, type MapParamsSchema, type MapReqBodySchema, type MapReqHeadersSchema, type MapReqQuerySchema, type MapResBodyMapSchema, type MapResHeadersSchema, type MapSchema, type Method, type MetricType, type MetricsDefinition, type MiddlewareContractDetails, type MiddlewareOrMiddlewareWithTypedHandler, type MultipartForm, type NestableRouterBasedHandler, type NumberOnlyObject, OpenTelemetryCollector, type ParamsDictionary, type ParamsObject, type PathBasedHandler, type PathMatch, type PathOrMiddlewareBasedHandler, type PathParamHttpContractDetails, type PathParamMethod, type QueryObject, type RawTypedResponseBody, type RequestContext, type ResolvedForklaunchRequest, type ResponseBody, type ResponseCompiledSchema, type ResponseShape, type ResponsesObject, type SchemaAuthMethods, type SdkClient, type ServerSentEventBody, type StatusCode, type StringOnlyObject, type TelemetryOptions, type TextBody, type TypedBody, type TypedHandler, type TypedMiddlewareDefinition, type TypedNestableMiddlewareDefinition, type TypedResponseBody, type UnionedFetchMap, type UnknownBody, type UnknownResponseBody, type UrlEncodedForm, delete_, discriminateBody, discriminateResponseBodies, enrichExpressLikeSend, evaluateTelemetryOptions, generateMcpServer, generateSwaggerDocument, get, getCodeForStatus, head, httpRequestsTotalCounter, httpServerDurationHistogram, isClientError, isForklaunchRequest, isForklaunchRouter, isInformational, isRedirection, isServerError, isSuccessful, isValidStatusCode, logger, meta, metricsDefinitions, middleware, options, patch, post, put, recordMetric, trace, typedHandler };
|