@forklaunch/hyper-express 0.9.30 → 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/index.d.mts CHANGED
@@ -1,13 +1,14 @@
1
1
  import * as _forklaunch_core_http from '@forklaunch/core/http';
2
- import { ParamsObject, ResponsesObject, Body, QueryObject, HeadersObject, VersionSchema, SchemaAuthMethods, ContractDetails, ExpressLikeSchemaHandler, ResolvedSessionObject, SessionObject, ExpressLikeApplicationOptions, ExpressLikeRouterOptions, ForklaunchExpressLikeApplication, OpenTelemetryCollector, MetricsDefinition, ParsedQs, ForklaunchExpressLikeRouter, ForklaunchRouter, TypedMiddlewareDefinition } from '@forklaunch/core/http';
3
- import { AnySchemaValidator } from '@forklaunch/validator';
4
- import { Request, Response, MiddlewareNext, ServerConstructorOptions, Server, MiddlewareHandler, Router as Router$1 } from '@forklaunch/hyper-express-fork';
2
+ import { ParamsObject, ResponsesObject, Body, QueryObject, HeadersObject, VersionSchema, SchemaAuthMethods, ContractDetails, ExpressLikeSchemaHandler, ResolvedSessionObject, SessionObject, ExpressLikeApplicationOptions, ExpressLikeRouterOptions, ForklaunchExpressLikeApplication, OpenTelemetryCollector, MetricsDefinition, ParsedQs, StringOnlyObject, MiddlewareContractDetails, PathMatch, TypedHandler, ForklaunchExpressLikeRouter, ForklaunchRouter, TypedMiddlewareDefinition } from '@forklaunch/core/http';
3
+ import { AnySchemaValidator, Schema } from '@forklaunch/validator';
4
+ import { Request, Response, MiddlewareNext, ServerConstructorOptions, Server, MiddlewareHandler, Router as Router$1, WSRouteOptions, WSRouteHandler } from '@forklaunch/hyper-express-fork';
5
5
  export { MiddlewareNext as NextFunction, Request, Response, ServerConstructorOptions } from '@forklaunch/hyper-express-fork';
6
6
  import * as uWebsockets from 'uWebSockets.js';
7
7
  import { BusboyConfig } from 'busboy';
8
8
  export { BusboyConfig } from 'busboy';
9
9
  import { CorsOptions } from 'cors';
10
10
  export { CorsOptions } from 'cors';
11
+ import { EventSchema } from '@forklaunch/core/ws';
11
12
 
12
13
  /**
13
14
  * Creates a route handler that matches any HTTP method with schema validation and type safety.
@@ -802,12 +803,54 @@ type ExpressRequestHandler = (req: Omit<Request<Record<string, unknown>>, 'query
802
803
  headers: Record<string, unknown>;
803
804
  }, res: Response<Record<string, unknown>>, next: MiddlewareNext) => void;
804
805
 
806
+ type WebSocketUpgradeContext<SV extends AnySchemaValidator, BaseResponse, Upgrade extends StringOnlyObject<SV>> = Omit<BaseResponse, 'upgrade'> & {
807
+ upgrade: (context: Upgrade extends infer U ? U extends StringOnlyObject<SV> ? Schema<U, SV> : U : never) => void;
808
+ };
809
+ type WebSocketContractDetails<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>, VersionedApi extends VersionSchema<SV, 'middleware'>, BaseRequest, Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>, Upgrade extends StringOnlyObject<SV>> = MiddlewareContractDetails<SV, Name, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, VersionedApi, BaseRequest, Auth> & {
810
+ upgrade?: Upgrade;
811
+ };
812
+ type WebSocketTypedHandler<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>, VersionedApi extends VersionSchema<SV, 'middleware'>, BaseRequest, BaseResponse, NextFunction, Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>, Upgrade extends StringOnlyObject<SV>> = Omit<TypedHandler<SV, Name, 'middleware', Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, BaseRequest, WebSocketUpgradeContext<SV, BaseResponse, Upgrade>, NextFunction, Auth>, 'contractDetails' | 'handlers'> & {
813
+ contractDetails: WebSocketContractDetails<SV, Name, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, VersionedApi, BaseRequest, Auth, Upgrade>;
814
+ handlers: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, ResolvedSessionObject<SV, Auth, SessionObject<SV>>, BaseRequest, WebSocketUpgradeContext<SV, BaseResponse, Upgrade>, NextFunction>[];
815
+ };
816
+ interface TypedWebSocketMiddlewareDefinition<ChainableRouter, SV extends AnySchemaValidator, Session extends SessionObject<SV>, BaseRequest, BaseResponse, NextFunction, RouterHandler> {
817
+ <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>, VersionedApi extends VersionSchema<SV, 'middleware'>, SessionSchema extends SessionObject<SV>, Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>, Upgrade extends StringOnlyObject<SV>>(path: Path, contractDetails: WebSocketContractDetails<SV, Name, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, VersionedApi, BaseRequest, Auth, Upgrade>, middleware: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, ResolvedSessionObject<SV, Auth, Session>, BaseRequest, WebSocketUpgradeContext<SV, BaseResponse, Upgrade>, NextFunction>, ...middlewares: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, SessionSchema, BaseRequest, WebSocketUpgradeContext<SV, BaseResponse, Upgrade>, NextFunction>[]): ChainableRouter;
818
+ <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>, VersionedApi extends VersionSchema<SV, 'middleware'>, Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>, Upgrade extends StringOnlyObject<SV>>(contractDetails: WebSocketContractDetails<SV, Name, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, VersionedApi, BaseRequest, Auth, Upgrade>, middleware: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, ResolvedSessionObject<SV, Auth, Session>, BaseRequest, WebSocketUpgradeContext<SV, BaseResponse, Upgrade>, NextFunction>, ...middlewares: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, ResolvedSessionObject<SV, Auth, Session>, BaseRequest, WebSocketUpgradeContext<SV, BaseResponse, Upgrade>, NextFunction>[]): ChainableRouter;
819
+ (middleware: RouterHandler, ...otherMiddleware: RouterHandler[]): ChainableRouter;
820
+ <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>, VersionedApi extends VersionSchema<SV, 'middleware'>, Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>, Upgrade extends StringOnlyObject<SV>>(path: PathMatch<SuppliedPath, Path>, middleware: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, ResolvedSessionObject<SV, Auth, Session>, BaseRequest, WebSocketUpgradeContext<SV, BaseResponse, Upgrade>, NextFunction>, ...middlewareAndTypedHandler: [
821
+ ...ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, ResolvedSessionObject<SV, Auth, Session>, BaseRequest, Omit<BaseResponse, 'upgrade'> & {
822
+ upgrade: (context: Schema<Upgrade, SV>) => void;
823
+ }, NextFunction>[],
824
+ WebSocketTypedHandler<SV, Name, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, BaseRequest, Omit<BaseResponse, 'upgrade'> & {
825
+ upgrade: (context: Schema<Upgrade, SV>) => void;
826
+ }, NextFunction, Auth, Upgrade>
827
+ ]): ChainableRouter;
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>, VersionedApi extends VersionSchema<SV, 'middleware'>, Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>, Upgrade extends StringOnlyObject<SV>>(middleware: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, ResolvedSessionObject<SV, Auth, Session>, BaseRequest, Omit<BaseResponse, 'upgrade'> & {
829
+ upgrade: (context: Schema<Upgrade, SV>) => void;
830
+ }, NextFunction>, ...middlewareAndTypedHandler: [
831
+ ...ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, ResolvedSessionObject<SV, Auth, Session>, BaseRequest, Omit<BaseResponse, 'upgrade'> & {
832
+ upgrade: (context: Schema<Upgrade, SV>) => void;
833
+ }, NextFunction>[],
834
+ WebSocketTypedHandler<SV, Name, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, BaseRequest, Omit<BaseResponse, 'upgrade'> & {
835
+ upgrade: (context: Schema<Upgrade, SV>) => void;
836
+ }, NextFunction, Auth, Upgrade>
837
+ ]): ChainableRouter;
838
+ <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>, VersionedApi extends VersionSchema<SV, 'middleware'>, Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>, Upgrade extends StringOnlyObject<SV>>(path: PathMatch<SuppliedPath, Path>, typedHandler: WebSocketTypedHandler<SV, Name, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, BaseRequest, Omit<BaseResponse, 'upgrade'> & {
839
+ upgrade: (context: Schema<Upgrade, SV>) => void;
840
+ }, NextFunction, Auth, Upgrade>): ChainableRouter;
841
+ <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>, VersionedApi extends VersionSchema<SV, 'middleware'>, Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>, Upgrade extends StringOnlyObject<SV>>(typedHandler: WebSocketTypedHandler<SV, Name, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, BaseRequest, Omit<BaseResponse, 'upgrade'> & {
842
+ upgrade: (context: Schema<Upgrade, SV>) => void;
843
+ }, NextFunction, Auth, Upgrade>): ChainableRouter;
844
+ }
845
+
805
846
  declare class Router<SV extends AnySchemaValidator, BasePath extends `/${string}`, RouterSession extends SessionObject<SV>> extends ForklaunchExpressLikeRouter<SV, BasePath, MiddlewareHandler, Router$1, Request<Record<string, unknown>>, Response<Record<string, unknown>>, MiddlewareNext, RouterSession> implements ForklaunchRouter<SV> {
806
847
  basePath: BasePath;
807
848
  private configOptions;
808
849
  constructor(basePath: BasePath, schemaValidator: SV, openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>, options?: ExpressRouterOptions<SV, RouterSession>);
809
850
  route(path: string): this;
810
851
  any: TypedMiddlewareDefinition<this, SV, RouterSession, Request<Record<string, unknown>>, Response<Record<string, unknown>>, MiddlewareNext, ExpressRequestHandler>;
852
+ upgrade: TypedWebSocketMiddlewareDefinition<this, SV, RouterSession, Request<Record<string, unknown>>, Response<Record<string, unknown>>, MiddlewareNext, ExpressRequestHandler>;
853
+ ws(pattern: string, eventSchemas: EventSchema<SV>, options?: WSRouteOptions, handler?: WSRouteHandler<(typeof eventSchemas)['userData']>): void;
811
854
  clone(): this;
812
855
  }
813
856
 
package/lib/index.d.ts CHANGED
@@ -1,13 +1,14 @@
1
1
  import * as _forklaunch_core_http from '@forklaunch/core/http';
2
- import { ParamsObject, ResponsesObject, Body, QueryObject, HeadersObject, VersionSchema, SchemaAuthMethods, ContractDetails, ExpressLikeSchemaHandler, ResolvedSessionObject, SessionObject, ExpressLikeApplicationOptions, ExpressLikeRouterOptions, ForklaunchExpressLikeApplication, OpenTelemetryCollector, MetricsDefinition, ParsedQs, ForklaunchExpressLikeRouter, ForklaunchRouter, TypedMiddlewareDefinition } from '@forklaunch/core/http';
3
- import { AnySchemaValidator } from '@forklaunch/validator';
4
- import { Request, Response, MiddlewareNext, ServerConstructorOptions, Server, MiddlewareHandler, Router as Router$1 } from '@forklaunch/hyper-express-fork';
2
+ import { ParamsObject, ResponsesObject, Body, QueryObject, HeadersObject, VersionSchema, SchemaAuthMethods, ContractDetails, ExpressLikeSchemaHandler, ResolvedSessionObject, SessionObject, ExpressLikeApplicationOptions, ExpressLikeRouterOptions, ForklaunchExpressLikeApplication, OpenTelemetryCollector, MetricsDefinition, ParsedQs, StringOnlyObject, MiddlewareContractDetails, PathMatch, TypedHandler, ForklaunchExpressLikeRouter, ForklaunchRouter, TypedMiddlewareDefinition } from '@forklaunch/core/http';
3
+ import { AnySchemaValidator, Schema } from '@forklaunch/validator';
4
+ import { Request, Response, MiddlewareNext, ServerConstructorOptions, Server, MiddlewareHandler, Router as Router$1, WSRouteOptions, WSRouteHandler } from '@forklaunch/hyper-express-fork';
5
5
  export { MiddlewareNext as NextFunction, Request, Response, ServerConstructorOptions } from '@forklaunch/hyper-express-fork';
6
6
  import * as uWebsockets from 'uWebSockets.js';
7
7
  import { BusboyConfig } from 'busboy';
8
8
  export { BusboyConfig } from 'busboy';
9
9
  import { CorsOptions } from 'cors';
10
10
  export { CorsOptions } from 'cors';
11
+ import { EventSchema } from '@forklaunch/core/ws';
11
12
 
12
13
  /**
13
14
  * Creates a route handler that matches any HTTP method with schema validation and type safety.
@@ -802,12 +803,54 @@ type ExpressRequestHandler = (req: Omit<Request<Record<string, unknown>>, 'query
802
803
  headers: Record<string, unknown>;
803
804
  }, res: Response<Record<string, unknown>>, next: MiddlewareNext) => void;
804
805
 
806
+ type WebSocketUpgradeContext<SV extends AnySchemaValidator, BaseResponse, Upgrade extends StringOnlyObject<SV>> = Omit<BaseResponse, 'upgrade'> & {
807
+ upgrade: (context: Upgrade extends infer U ? U extends StringOnlyObject<SV> ? Schema<U, SV> : U : never) => void;
808
+ };
809
+ type WebSocketContractDetails<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>, VersionedApi extends VersionSchema<SV, 'middleware'>, BaseRequest, Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>, Upgrade extends StringOnlyObject<SV>> = MiddlewareContractDetails<SV, Name, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, VersionedApi, BaseRequest, Auth> & {
810
+ upgrade?: Upgrade;
811
+ };
812
+ type WebSocketTypedHandler<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>, VersionedApi extends VersionSchema<SV, 'middleware'>, BaseRequest, BaseResponse, NextFunction, Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>, Upgrade extends StringOnlyObject<SV>> = Omit<TypedHandler<SV, Name, 'middleware', Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, BaseRequest, WebSocketUpgradeContext<SV, BaseResponse, Upgrade>, NextFunction, Auth>, 'contractDetails' | 'handlers'> & {
813
+ contractDetails: WebSocketContractDetails<SV, Name, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, VersionedApi, BaseRequest, Auth, Upgrade>;
814
+ handlers: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, ResolvedSessionObject<SV, Auth, SessionObject<SV>>, BaseRequest, WebSocketUpgradeContext<SV, BaseResponse, Upgrade>, NextFunction>[];
815
+ };
816
+ interface TypedWebSocketMiddlewareDefinition<ChainableRouter, SV extends AnySchemaValidator, Session extends SessionObject<SV>, BaseRequest, BaseResponse, NextFunction, RouterHandler> {
817
+ <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>, VersionedApi extends VersionSchema<SV, 'middleware'>, SessionSchema extends SessionObject<SV>, Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>, Upgrade extends StringOnlyObject<SV>>(path: Path, contractDetails: WebSocketContractDetails<SV, Name, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, VersionedApi, BaseRequest, Auth, Upgrade>, middleware: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, ResolvedSessionObject<SV, Auth, Session>, BaseRequest, WebSocketUpgradeContext<SV, BaseResponse, Upgrade>, NextFunction>, ...middlewares: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, SessionSchema, BaseRequest, WebSocketUpgradeContext<SV, BaseResponse, Upgrade>, NextFunction>[]): ChainableRouter;
818
+ <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>, VersionedApi extends VersionSchema<SV, 'middleware'>, Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>, Upgrade extends StringOnlyObject<SV>>(contractDetails: WebSocketContractDetails<SV, Name, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, VersionedApi, BaseRequest, Auth, Upgrade>, middleware: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, ResolvedSessionObject<SV, Auth, Session>, BaseRequest, WebSocketUpgradeContext<SV, BaseResponse, Upgrade>, NextFunction>, ...middlewares: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, ResolvedSessionObject<SV, Auth, Session>, BaseRequest, WebSocketUpgradeContext<SV, BaseResponse, Upgrade>, NextFunction>[]): ChainableRouter;
819
+ (middleware: RouterHandler, ...otherMiddleware: RouterHandler[]): ChainableRouter;
820
+ <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>, VersionedApi extends VersionSchema<SV, 'middleware'>, Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>, Upgrade extends StringOnlyObject<SV>>(path: PathMatch<SuppliedPath, Path>, middleware: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, ResolvedSessionObject<SV, Auth, Session>, BaseRequest, WebSocketUpgradeContext<SV, BaseResponse, Upgrade>, NextFunction>, ...middlewareAndTypedHandler: [
821
+ ...ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, ResolvedSessionObject<SV, Auth, Session>, BaseRequest, Omit<BaseResponse, 'upgrade'> & {
822
+ upgrade: (context: Schema<Upgrade, SV>) => void;
823
+ }, NextFunction>[],
824
+ WebSocketTypedHandler<SV, Name, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, BaseRequest, Omit<BaseResponse, 'upgrade'> & {
825
+ upgrade: (context: Schema<Upgrade, SV>) => void;
826
+ }, NextFunction, Auth, Upgrade>
827
+ ]): ChainableRouter;
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>, VersionedApi extends VersionSchema<SV, 'middleware'>, Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>, Upgrade extends StringOnlyObject<SV>>(middleware: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, ResolvedSessionObject<SV, Auth, Session>, BaseRequest, Omit<BaseResponse, 'upgrade'> & {
829
+ upgrade: (context: Schema<Upgrade, SV>) => void;
830
+ }, NextFunction>, ...middlewareAndTypedHandler: [
831
+ ...ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, ResolvedSessionObject<SV, Auth, Session>, BaseRequest, Omit<BaseResponse, 'upgrade'> & {
832
+ upgrade: (context: Schema<Upgrade, SV>) => void;
833
+ }, NextFunction>[],
834
+ WebSocketTypedHandler<SV, Name, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, BaseRequest, Omit<BaseResponse, 'upgrade'> & {
835
+ upgrade: (context: Schema<Upgrade, SV>) => void;
836
+ }, NextFunction, Auth, Upgrade>
837
+ ]): ChainableRouter;
838
+ <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>, VersionedApi extends VersionSchema<SV, 'middleware'>, Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>, Upgrade extends StringOnlyObject<SV>>(path: PathMatch<SuppliedPath, Path>, typedHandler: WebSocketTypedHandler<SV, Name, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, BaseRequest, Omit<BaseResponse, 'upgrade'> & {
839
+ upgrade: (context: Schema<Upgrade, SV>) => void;
840
+ }, NextFunction, Auth, Upgrade>): ChainableRouter;
841
+ <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>, VersionedApi extends VersionSchema<SV, 'middleware'>, Auth extends SchemaAuthMethods<SV, P, ReqBody, ReqQuery, ReqHeaders, VersionedApi, BaseRequest>, Upgrade extends StringOnlyObject<SV>>(typedHandler: WebSocketTypedHandler<SV, Name, Path, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, BaseRequest, Omit<BaseResponse, 'upgrade'> & {
842
+ upgrade: (context: Schema<Upgrade, SV>) => void;
843
+ }, NextFunction, Auth, Upgrade>): ChainableRouter;
844
+ }
845
+
805
846
  declare class Router<SV extends AnySchemaValidator, BasePath extends `/${string}`, RouterSession extends SessionObject<SV>> extends ForklaunchExpressLikeRouter<SV, BasePath, MiddlewareHandler, Router$1, Request<Record<string, unknown>>, Response<Record<string, unknown>>, MiddlewareNext, RouterSession> implements ForklaunchRouter<SV> {
806
847
  basePath: BasePath;
807
848
  private configOptions;
808
849
  constructor(basePath: BasePath, schemaValidator: SV, openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>, options?: ExpressRouterOptions<SV, RouterSession>);
809
850
  route(path: string): this;
810
851
  any: TypedMiddlewareDefinition<this, SV, RouterSession, Request<Record<string, unknown>>, Response<Record<string, unknown>>, MiddlewareNext, ExpressRequestHandler>;
852
+ upgrade: TypedWebSocketMiddlewareDefinition<this, SV, RouterSession, Request<Record<string, unknown>>, Response<Record<string, unknown>>, MiddlewareNext, ExpressRequestHandler>;
853
+ ws(pattern: string, eventSchemas: EventSchema<SV>, options?: WSRouteOptions, handler?: WSRouteHandler<(typeof eventSchemas)['userData']>): void;
811
854
  clone(): this;
812
855
  }
813
856
 
package/lib/index.js CHANGED
@@ -502,7 +502,7 @@ Correlation id: ${(0, import_http13.isForklaunchRequest)(req) ? req.context.corr
502
502
  [import_http13.ATTR_HTTP_RESPONSE_STATUS_CODE]: statusCode ?? 500
503
503
  });
504
504
  });
505
- this.internal.use("*", (req, res, next) => {
505
+ this.internal.any("/*", (req, res, next) => {
506
506
  res.setHeader("X-Powered-By", "forklaunch");
507
507
  next();
508
508
  });
@@ -718,9 +718,18 @@ var Router = class _Router extends import_http14.ForklaunchExpressLikeRouter {
718
718
  ...middlewareOrMiddlewareWithTypedHandler
719
719
  );
720
720
  };
721
- // TODO: Implement the rest of the methods
722
- // upgrade
723
- // ws
721
+ upgrade = ((pathOrContractDetailsOrMiddlewareOrTypedHandler, contractDetailsOrMiddlewareOrTypedHandler, ...middlewareOrMiddlewareWithTypedHandler) => {
722
+ return this.registerMiddlewareHandler(
723
+ this.internal.upgrade,
724
+ pathOrContractDetailsOrMiddlewareOrTypedHandler,
725
+ contractDetailsOrMiddlewareOrTypedHandler,
726
+ ...middlewareOrMiddlewareWithTypedHandler
727
+ );
728
+ });
729
+ ws(pattern, eventSchemas, options2, handler) {
730
+ this.internal.ws(pattern, options2 ?? {}, handler ?? (() => {
731
+ }));
732
+ }
724
733
  clone() {
725
734
  const clone = new _Router(
726
735
  this.basePath,
package/lib/index.mjs CHANGED
@@ -496,7 +496,7 @@ Correlation id: ${isForklaunchRequest(req) ? req.context.correlationId : "No cor
496
496
  [ATTR_HTTP_RESPONSE_STATUS_CODE]: statusCode ?? 500
497
497
  });
498
498
  });
499
- this.internal.use("*", (req, res, next) => {
499
+ this.internal.any("/*", (req, res, next) => {
500
500
  res.setHeader("X-Powered-By", "forklaunch");
501
501
  next();
502
502
  });
@@ -716,9 +716,18 @@ var Router = class _Router extends ForklaunchExpressLikeRouter {
716
716
  ...middlewareOrMiddlewareWithTypedHandler
717
717
  );
718
718
  };
719
- // TODO: Implement the rest of the methods
720
- // upgrade
721
- // ws
719
+ upgrade = ((pathOrContractDetailsOrMiddlewareOrTypedHandler, contractDetailsOrMiddlewareOrTypedHandler, ...middlewareOrMiddlewareWithTypedHandler) => {
720
+ return this.registerMiddlewareHandler(
721
+ this.internal.upgrade,
722
+ pathOrContractDetailsOrMiddlewareOrTypedHandler,
723
+ contractDetailsOrMiddlewareOrTypedHandler,
724
+ ...middlewareOrMiddlewareWithTypedHandler
725
+ );
726
+ });
727
+ ws(pattern, eventSchemas, options2, handler) {
728
+ this.internal.ws(pattern, options2 ?? {}, handler ?? (() => {
729
+ }));
730
+ }
722
731
  clone() {
723
732
  const clone = new _Router(
724
733
  this.basePath,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forklaunch/hyper-express",
3
- "version": "0.9.30",
3
+ "version": "0.10.0",
4
4
  "description": "Forklaunch framework for hyper-express.",
5
5
  "homepage": "https://github.com/forklaunch/forklaunch-js#readme",
6
6
  "bugs": {
@@ -34,9 +34,10 @@
34
34
  "swagger-ui-dist": "^5.30.0",
35
35
  "swagger-ui-express": "^5.0.1",
36
36
  "uWebSockets.js": "github:uNetworking/uWebSockets.js#v20.52.0",
37
- "@forklaunch/validator": "0.10.21",
38
- "@forklaunch/core": "0.15.11",
39
- "@forklaunch/common": "0.6.21"
37
+ "@forklaunch/common": "0.6.22",
38
+ "@forklaunch/core": "0.16.0",
39
+ "@forklaunch/ws": "0.1.0",
40
+ "@forklaunch/validator": "0.10.22"
40
41
  },
41
42
  "devDependencies": {
42
43
  "@eslint/js": "^9.38.0",