@sourceregistry/node-webserver 1.2.3 → 1.3.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.
@@ -17,15 +17,15 @@ export type ExtractSegmentParam<S extends string> = S extends `[...${infer Param
17
17
  [K in Param]: string;
18
18
  } : {};
19
19
  export type MergeParams<A, B> = A & B;
20
- export type RouteHandler<Path extends string, Locals extends Record<string, any> = {}> = (event: RequestEvent<ExtractPathParams<Path> & RequestEvent['params'], Path, Locals>) => MaybePromise<Response>;
20
+ export type RouteHandler<Path extends string, Locals extends App.Locals = App.Locals> = (event: RequestEvent<ExtractPathParams<Path> & RequestEvent['params'], Path, Locals>) => MaybePromise<Response>;
21
21
  export type ActionHandler<Path extends string, OutputData extends Record<string, any> = Record<string, any>> = Action<ExtractPathParams<Path>, OutputData>;
22
22
  export type Action<Params extends Partial<Record<string, string>> = Partial<Record<string, string>>, OutputData extends Record<string, any> | void = Record<string, any> | void> = (event: RequestEvent<Params>) => MaybePromise<OutputData>;
23
- export type Middleware<Path extends string = string, AddedLocals extends Record<string, any> = {}> = (event: RequestEvent<any, Path, any> & {
24
- locals: Record<string, any> & AddedLocals;
25
- }, next: () => MaybePromise<Response | undefined>) => MaybePromise<Response | undefined>;
26
- export type PreHandler<Locals extends Record<string, any> = {}> = (event: RequestEvent<any, string, Locals>) => MaybePromise<Response | void>;
27
- export type PostHandler<Locals extends Record<string, any> = {}> = (event: RequestEvent<any, string, Locals>, response: Response) => MaybePromise<Response | void>;
28
- export type WebSocketHandler<Path extends string, Locals extends Record<string, any> = {}> = (event: RequestEvent<ExtractPathParams<Path> & RequestEvent['params'], Path, Locals> & {
23
+ export type Middleware<Path extends string = string, AddedLocals extends App.Locals = App.Locals> = (event: MiddlewareEvent<Path, AddedLocals>, next: NextFunction) => MaybePromise<Response | undefined>;
24
+ export type NextFunction = () => MaybePromise<Response | undefined>;
25
+ export type MiddlewareEvent<Path extends string = string, AddedLocals extends App.Locals = App.Locals> = RequestEvent<any, Path | null, App.Locals & AddedLocals>;
26
+ export type PreHandler<Locals extends App.Locals = App.Locals> = (event: RequestEvent<any, string, Locals>) => MaybePromise<Response | void>;
27
+ export type PostHandler<Locals extends App.Locals = App.Locals> = (event: RequestEvent<any, string, Locals>, response: Response) => MaybePromise<Response | void>;
28
+ export type WebSocketHandler<Path extends string, Locals extends App.Locals = App.Locals> = (event: RequestEvent<ExtractPathParams<Path> & RequestEvent['params'], Path, Locals> & {
29
29
  websocket: WebSocket;
30
30
  }) => MaybePromise<any>;
31
31
  export interface Route<Path extends string> {
@@ -67,9 +67,9 @@ export declare class Router<Locals extends App.Locals = App.Locals> {
67
67
  OPTIONS<Path extends string>(path: Path, handler: RouteHandler<Path, Locals>, ...middlewares: Middleware<Path, any>[]): Router<Locals>;
68
68
  USE<Path extends string>(path: Path, handler: RouteHandler<Path, Locals>, ...middlewares: Middleware<Path, any>[]): Router<Locals>;
69
69
  action<Path extends string, OutputData extends Record<string, any> = Record<string, any>>(path: Path, handler: ActionHandler<Path, OutputData>, ...middlewares: Middleware<Path, any>[]): Router<Locals>;
70
- use<Prefix extends string, InnerLocals extends Record<string, any>>(input: readonly [Prefix, Router<InnerLocals>, ...Middleware<Prefix>[]]): Router<Locals & InnerLocals>;
71
- use<Prefix extends string, InnerLocals extends Record<string, any>>(prefix: Prefix, router: Router<InnerLocals>, ...middlewares: Middleware<Prefix>[]): Router<Locals & InnerLocals>;
72
- useMiddleware<NewLocals extends Record<string, any>>(...mw: Middleware<string, NewLocals>[]): Router<Locals & NewLocals>;
70
+ use<Prefix extends string, InnerLocals extends App.Locals = App.Locals>(input: readonly [Prefix, Router<InnerLocals>, ...Middleware<Prefix>[]]): Router<Locals & InnerLocals>;
71
+ use<Prefix extends string, InnerLocals extends App.Locals = App.Locals>(prefix: Prefix, router: Router<InnerLocals>, ...middlewares: Middleware<Prefix>[]): Router<Locals & InnerLocals>;
72
+ useMiddleware<NewLocals extends App.Locals = App.Locals>(...mw: Middleware<string, NewLocals>[]): Router<Locals & NewLocals>;
73
73
  pre(...handlers: PreHandler<Locals>[]): Router<Locals>;
74
74
  post(...handlers: PostHandler<Locals>[]): Router<Locals>;
75
75
  discard(path_or_prefix: string, method?: RequestMethod): this;
@@ -3,7 +3,7 @@ import { ServerOptions as HttpsServerOptions } from 'https';
3
3
  import { RequestEvent, Router } from './';
4
4
  import { ListenOptions } from 'net';
5
5
  type HostMatcher = string | RegExp | ((host: string) => boolean);
6
- type InferServerLocals<TServerConfig extends ServerConfig> = Extract<TServerConfig['locals'], (event: RequestEvent) => any> extends (event: RequestEvent) => infer TLocals ? TLocals extends Record<string, any> ? TLocals : App.Locals : App.Locals;
6
+ type InferServerLocals<TServerConfig extends ServerConfig> = Extract<TServerConfig['locals'], (event: RequestEvent) => any> extends (event: RequestEvent) => infer TLocals ? TLocals extends App.Locals ? TLocals : App.Locals : App.Locals;
7
7
  export type SecurityConfig = {
8
8
  /**
9
9
  * Trust the incoming Host header when constructing event.url/request.url.
@@ -78,6 +78,10 @@ export declare class WebServer<TServerConfig extends ServerConfig = ServerConfig
78
78
  private sendWebResponse;
79
79
  private shouldOmitResponseBody;
80
80
  private isAllowedWebSocketOrigin;
81
+ private createEventFetch;
82
+ private toEventFetchRequest;
83
+ private withInheritedRequestHeaders;
84
+ private inheritRequestHeader;
81
85
  private toRequestEvent;
82
86
  }
83
87
  export {};
@@ -0,0 +1,12 @@
1
+ // import {text, WebServer} from "@sourceregistry/node-webserver";
2
+ import {enhance, text, WebServer} from "../src";
3
+
4
+ const server = new WebServer();
5
+
6
+ server.pre(({request}) => console.log(`[${request.method}] ${request.url}`));
7
+
8
+ server.GET('/', enhance(({context: {enhanced}}) => text(`Hello ${enhanced ? "enhanced" : "normal"} world!`), () => ({enhanced: true})))
9
+
10
+ server.listen(3000, () => {
11
+ console.log("Server listening on port 3000");
12
+ })
@@ -1,10 +1,10 @@
1
- import {WebServer} from "../src";
1
+ import {WebServer, text} from "../src";
2
2
 
3
3
  const server = new WebServer();
4
4
 
5
5
  server.pre(({request}) => console.log(`[${request.method}] ${request.url}`));
6
6
 
7
- server.GET('/', () => new Response('Hello world!'))
7
+ server.GET('/', () => text('Hello world!'))
8
8
 
9
9
  server.listen(3000, () => {
10
10
  console.log("Server listening on port 3000");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sourceregistry/node-webserver",
3
- "version": "1.2.3",
3
+ "version": "1.3.0",
4
4
  "description": "TypeScript web server for Node.js with web-standard Request and Response APIs",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs.js",