@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.
- package/README.md +62 -0
- package/dist/enhance.d.ts +11 -0
- package/dist/index.cjs.js +2 -2
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.es.js +256 -204
- package/dist/index.es.js.map +1 -1
- package/dist/types/RequestEvent.d.ts +9 -1
- package/dist/types/router.d.ts +10 -10
- package/dist/types/server.d.ts +5 -1
- package/examples/enhanced.ts +12 -0
- package/examples/simple.ts +2 -2
- package/package.json +1 -1
package/dist/types/router.d.ts
CHANGED
|
@@ -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
|
|
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
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
export type PreHandler<Locals extends
|
|
27
|
-
export type PostHandler<Locals extends
|
|
28
|
-
export type WebSocketHandler<Path extends string, Locals extends
|
|
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
|
|
71
|
-
use<Prefix extends string, InnerLocals extends
|
|
72
|
-
useMiddleware<NewLocals extends
|
|
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;
|
package/dist/types/server.d.ts
CHANGED
|
@@ -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
|
|
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
|
+
})
|
package/examples/simple.ts
CHANGED
|
@@ -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('/', () =>
|
|
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