insite-http 2.0.7 → 2.1.1
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/dist/Middleware.d.ts +3 -3
- package/dist/Middleware.d.ts.map +1 -1
- package/dist/Request.d.ts +43 -0
- package/dist/Request.d.ts.map +1 -0
- package/dist/Response.d.ts +34 -15
- package/dist/Response.d.ts.map +1 -1
- package/dist/Server.d.ts +19 -7
- package/dist/Server.d.ts.map +1 -1
- package/dist/StaticServer.d.ts +4 -4
- package/dist/StaticServer.d.ts.map +1 -1
- package/dist/compression.d.ts +5 -4
- package/dist/compression.d.ts.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +4 -4
- package/dist/middlewares/Initials.d.ts +1 -1
- package/dist/middlewares/Initials.d.ts.map +1 -1
- package/dist/middlewares/Static/Static.d.ts +3 -3
- package/dist/middlewares/Static/Static.d.ts.map +1 -1
- package/dist/middlewares/Template.d.ts +3 -3
- package/dist/middlewares/Template.d.ts.map +1 -1
- package/dist/symbols.d.ts +3 -2
- package/dist/symbols.d.ts.map +1 -1
- package/dist/types.d.ts +23 -15
- package/dist/types.d.ts.map +1 -1
- package/dist/utils.d.ts +6 -0
- package/dist/utils.d.ts.map +1 -0
- package/package.json +5 -4
package/dist/Middleware.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { HTTPServer } from "./Server";
|
|
2
2
|
import { Handler, Method, RegExpOrString } from "./types";
|
|
3
|
-
export declare class
|
|
3
|
+
export declare class ClassMiddleware {
|
|
4
4
|
listeners: Partial<Record<Method, [RegExpOrString, Handler][]>>;
|
|
5
|
-
bindTo?(server:
|
|
5
|
+
bindTo?(server: HTTPServer): void;
|
|
6
6
|
}
|
|
7
7
|
//# sourceMappingURL=Middleware.d.ts.map
|
package/dist/Middleware.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Middleware.d.ts","sourceRoot":"","sources":["../src/Middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"Middleware.d.ts","sourceRoot":"","sources":["../src/Middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAG1D,qBAAa,eAAe;IAC3B,SAAS,EAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAE,cAAc,EAAE,OAAO,CAAE,EAAE,CAAC,CAAC,CAAC;IACnE,MAAM,CAAC,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;CACjC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { IncomingMessage } from "node:http";
|
|
2
|
+
import querystring from "node:querystring";
|
|
3
|
+
import { matchSymbol } from "./symbols";
|
|
4
|
+
import type { RequestParams, RequestQueryParams } from "./types";
|
|
5
|
+
export declare function matches(request: Request, regExp: RegExp): boolean;
|
|
6
|
+
export declare class RequestBody {
|
|
7
|
+
#private;
|
|
8
|
+
constructor(request: Request<any>);
|
|
9
|
+
/** Request body as a ReadableStream */
|
|
10
|
+
stream(): Request<any>;
|
|
11
|
+
/** Request body as a string */
|
|
12
|
+
text(): Promise<string>;
|
|
13
|
+
/** Request body as an Uint8Array */
|
|
14
|
+
bytes(): Promise<Uint8Array<ArrayBufferLike>>;
|
|
15
|
+
/** Request body as an ArrayBuffer */
|
|
16
|
+
arrayBuffer(): Promise<ArrayBufferLike>;
|
|
17
|
+
/** Request body as a parsed JSON object */
|
|
18
|
+
json(): Promise<any>;
|
|
19
|
+
/** Request body as a parsed URL-encoded object */
|
|
20
|
+
urlEncoded(): Promise<querystring.ParsedUrlQuery>;
|
|
21
|
+
}
|
|
22
|
+
declare module "node:http" {
|
|
23
|
+
interface IncomingMessage {
|
|
24
|
+
_addHeaderLine(field: string, value: string, first: boolean): void;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export declare class Request<P = RequestParams> extends IncomingMessage {
|
|
28
|
+
#private;
|
|
29
|
+
url: string;
|
|
30
|
+
/** Pathname part of the URL string */
|
|
31
|
+
path: string;
|
|
32
|
+
/** Query string part of the URL string */
|
|
33
|
+
querystring: string;
|
|
34
|
+
_addHeaderLine(field: string, value: string, first: boolean): void;
|
|
35
|
+
[matchSymbol]?: RegExpExecArray;
|
|
36
|
+
/** Params parsed from the URL string */
|
|
37
|
+
get params(): P;
|
|
38
|
+
/** Params parsed from the query string part of the URL string */
|
|
39
|
+
get query(): RequestQueryParams;
|
|
40
|
+
/** Object with async methods to get the request body */
|
|
41
|
+
get body(): RequestBody;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=Request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Request.d.ts","sourceRoot":"","sources":["../src/Request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAMjE,wBAAgB,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAUvD;AAGD,qBAAa,WAAW;;gBACX,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC;IAOjC,uCAAuC;IACvC,MAAM;IAMN,+BAA+B;IAC/B,IAAI;IAiBJ,oCAAoC;IAC9B,KAAK;IAIX,qCAAqC;IAC/B,WAAW;IAIjB,2CAA2C;IACrC,IAAI;IAIV,kDAAkD;IAC5C,UAAU;CAShB;AAGD,OAAO,QAAQ,WAAW,CAAC;IAC1B,UAAU,eAAe;QACxB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;KACnE;CACD;AAED,qBAAa,OAAO,CAAC,CAAC,GAAG,aAAa,CAAE,SAAQ,eAAe;;IAEtD,GAAG,EAAE,MAAM,CAAC;IAEpB,sCAAsC;IACtC,IAAI,EAAG,MAAM,CAAC;IAEd,0CAA0C;IAC1C,WAAW,EAAG,MAAM,CAAC;IAErB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAQlE,CAAC,WAAW,CAAC,CAAC,EAAE,eAAe,CAAC;IAIhC,wCAAwC;IACxC,IAAI,MAAM,MAET;IAID,iEAAiE;IACjE,IAAI,KAAK,uBAER;IAID,wDAAwD;IACxD,IAAI,IAAI,gBAEP;CAED"}
|
package/dist/Response.d.ts
CHANGED
|
@@ -1,18 +1,37 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
1
|
+
import { OutgoingHttpHeader, OutgoingHttpHeaders, ServerResponse } from "node:http";
|
|
2
|
+
import { Readable } from "node:stream";
|
|
3
|
+
import { requestSymbol, serverSymbol } from "./symbols";
|
|
4
|
+
import type { Request } from "./Request";
|
|
5
|
+
import type { HTTPServer } from "./Server";
|
|
4
6
|
import type { ErrorParams } from "./types";
|
|
5
|
-
export declare class
|
|
6
|
-
[
|
|
7
|
-
[
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
7
|
+
export declare class Response extends ServerResponse<Request> {
|
|
8
|
+
[serverSymbol]: HTTPServer;
|
|
9
|
+
[requestSymbol]: Request;
|
|
10
|
+
/** End response with a plain text */
|
|
11
|
+
text(body: string): this;
|
|
12
|
+
/** End response with a JSON string */
|
|
13
|
+
json(value: Parameters<JSON["stringify"]>[0]): this;
|
|
14
|
+
/** End response with an URL-encoded string */
|
|
15
|
+
urlEncoded(params: ConstructorParameters<typeof URLSearchParams>[0]): this;
|
|
16
|
+
/** End response with a stream */
|
|
17
|
+
stream(stream: Readable, headers?: OutgoingHttpHeader[] | OutgoingHttpHeaders): this;
|
|
18
|
+
/** End response with an error */
|
|
19
|
+
error(statusCode: number, params?: ErrorParams | string): Response;
|
|
20
|
+
/** End response with the 400 Bad Request */
|
|
21
|
+
badRequest(params?: ErrorParams | string): Response;
|
|
22
|
+
/** End response with the 401 Unauthorized */
|
|
23
|
+
unauthorized(params?: ErrorParams | string): Response;
|
|
24
|
+
/** End response with the 403 Forbidden */
|
|
25
|
+
forbidden(params?: ErrorParams | string): Response;
|
|
26
|
+
/** End response with the 404 Not Found */
|
|
27
|
+
notFound(params?: ErrorParams | string): Response;
|
|
28
|
+
/** End response with the 408 Request Timeout */
|
|
29
|
+
requestTimeout(params?: ErrorParams | string): Response;
|
|
30
|
+
/** End response with the 410 Gone */
|
|
31
|
+
gone(params?: ErrorParams | string): Response;
|
|
32
|
+
/** End response with the 500 Internal Server Error */
|
|
33
|
+
internalServerError(params?: ErrorParams | string): Response;
|
|
34
|
+
/** End response with the 503 Service Unavailable */
|
|
35
|
+
serviceUnavailable(params?: ErrorParams | string): Response;
|
|
17
36
|
}
|
|
18
37
|
//# sourceMappingURL=Response.d.ts.map
|
package/dist/Response.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Response.d.ts","sourceRoot":"","sources":["../src/Response.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"Response.d.ts","sourceRoot":"","sources":["../src/Response.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACpF,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAG3C,qBAAa,QAAS,SAAQ,cAAc,CAAC,OAAO,CAAC;IAEpD,CAAC,YAAY,CAAC,EAAG,UAAU,CAAC;IAC5B,CAAC,aAAa,CAAC,EAAG,OAAO,CAAC;IAE1B,qCAAqC;IACrC,IAAI,CAAC,IAAI,EAAE,MAAM;IAOjB,sCAAsC;IACtC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAS5C,8CAA8C;IAC9C,UAAU,CAAC,MAAM,EAAE,qBAAqB,CAAC,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC;IASnE,iCAAiC;IACjC,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,kBAAkB,EAAE,GAAG,mBAAmB;IAU7E,iCAAiC;IACjC,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,MAAM;IAIvD,4CAA4C;IAC5C,UAAU,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,MAAM;IAIxC,6CAA6C;IAC7C,YAAY,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,MAAM;IAI1C,0CAA0C;IAC1C,SAAS,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,MAAM;IAIvC,0CAA0C;IAC1C,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,MAAM;IAItC,gDAAgD;IAChD,cAAc,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,MAAM;IAI5C,qCAAqC;IACrC,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,MAAM;IAIlC,sDAAsD;IACtD,mBAAmB,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,MAAM;IAIjD,oDAAoD;IACpD,kBAAkB,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,MAAM;CAIhD"}
|
package/dist/Server.d.ts
CHANGED
|
@@ -1,23 +1,35 @@
|
|
|
1
1
|
import type http from "node:http";
|
|
2
2
|
import type https from "node:https";
|
|
3
|
-
import {
|
|
4
|
-
import { type ErrorParams, type
|
|
5
|
-
export declare class
|
|
3
|
+
import { Response } from "./Response";
|
|
4
|
+
import { type ErrorParams, type GenericMiddleware, type Handler, type Method, type Options, type RegExpOrString } from "./types";
|
|
5
|
+
export declare class HTTPServer {
|
|
6
6
|
#private;
|
|
7
|
-
constructor({ port, ssl, listeners, errors, server }: Options, middlewares?: (
|
|
7
|
+
constructor({ port, ssl, listeners, errors, server }: Options, middlewares?: (GenericMiddleware | false | null | undefined)[]);
|
|
8
|
+
/** Server icon */
|
|
8
9
|
icon: string;
|
|
10
|
+
/** Server name */
|
|
9
11
|
name: string;
|
|
10
12
|
get protocol(): string;
|
|
13
|
+
/** Node.js http(s) server object */
|
|
11
14
|
server: http.Server<typeof http.IncomingMessage, typeof http.ServerResponse> | https.Server<typeof http.IncomingMessage, typeof http.ServerResponse>;
|
|
15
|
+
/** Does the server use SSL */
|
|
12
16
|
get isS(): boolean;
|
|
13
|
-
_throw(response:
|
|
14
|
-
|
|
15
|
-
|
|
17
|
+
_throw(response: Response, statusCode: number, params?: ErrorParams | string): Response;
|
|
18
|
+
/** Add request listener */
|
|
19
|
+
addRequestListener(method: Method | "ALL", regExp: RegExpOrString, handler: Handler): this;
|
|
20
|
+
/** Add middleware */
|
|
21
|
+
addMiddleware(middleware: GenericMiddleware): this;
|
|
22
|
+
/** Add POST request listener */
|
|
16
23
|
post(regExp: RegExpOrString, handler: Handler): this;
|
|
24
|
+
/** Add GET request listener */
|
|
17
25
|
get(regExp: RegExpOrString, handler: Handler): this;
|
|
26
|
+
/** Add PUT request listener */
|
|
18
27
|
put(regExp: RegExpOrString, handler: Handler): this;
|
|
28
|
+
/** Add PATCH request listener */
|
|
19
29
|
patch(regExp: RegExpOrString, handler: Handler): this;
|
|
30
|
+
/** Add DELETE request listener */
|
|
20
31
|
delete(regExp: RegExpOrString, handler: Handler): this;
|
|
32
|
+
/** Make props for Node.js http(s).createServer method */
|
|
21
33
|
static makeProps({ ssl, server }: Options): http.ServerOptions | https.ServerOptions;
|
|
22
34
|
}
|
|
23
35
|
//# sourceMappingURL=Server.d.ts.map
|
package/dist/Server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Server.d.ts","sourceRoot":"","sources":["../src/Server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"Server.d.ts","sourceRoot":"","sources":["../src/Server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AAIpC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAON,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,OAAO,EAEZ,KAAK,MAAM,EACX,KAAK,OAAO,EACZ,KAAK,cAAc,EACnB,MAAM,SAAS,CAAC;AAIjB,qBAAa,UAAU;;gBACV,EACX,IAAI,EACJ,GAAG,EACH,SAAS,EACT,MAAM,EACN,MAAM,EACN,EAAE,OAAO,EAAE,WAAW,GAAE,CAAC,iBAAiB,GAAG,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC,EAAO;IA8C9E,kBAAkB;IAClB,IAAI,SAAU;IAEd,kBAAkB;IAClB,IAAI,SAAU;IACd,IAAI,QAAQ,WAEX;IAED,oCAAoC;IACpC,MAAM,+IAAC;IAEP,8BAA8B;IAC9B,IAAI,GAAG,YAEN;IAyDD,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,MAAM;IAmB5E,2BAA2B;IAC3B,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO;IAanF,qBAAqB;IACrB,aAAa,CAAC,UAAU,EAAE,iBAAiB;IA6B3C,gCAAgC;IAChC,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO;IAM7C,+BAA+B;IAC/B,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO;IAM5C,+BAA+B;IAC/B,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO;IAM5C,iCAAiC;IACjC,KAAK,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO;IAM9C,kCAAkC;IAClC,MAAM,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO;IAO/C,yDAAyD;IACzD,MAAM,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,GAMnC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa;CAG9C"}
|
package/dist/StaticServer.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { StaticMiddlewareOptions } from "./middlewares/Static";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
export declare class
|
|
5
|
-
constructor(options: StaticMiddlewareOptions, serverOptions: Options, middlewares?:
|
|
2
|
+
import { HTTPServer } from "./Server";
|
|
3
|
+
import { GenericMiddleware, Options } from "./types";
|
|
4
|
+
export declare class StaticServer extends HTTPServer {
|
|
5
|
+
constructor(options: StaticMiddlewareOptions, serverOptions: Options, middlewares?: GenericMiddleware[]);
|
|
6
6
|
name: string;
|
|
7
7
|
icon: string;
|
|
8
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StaticServer.d.ts","sourceRoot":"","sources":["../src/StaticServer.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"StaticServer.d.ts","sourceRoot":"","sources":["../src/StaticServer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGrD,qBAAa,YAAa,SAAQ,UAAU;gBAC/B,OAAO,EAAE,uBAAuB,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,GAAE,iBAAiB,EAAO;IAQ3G,IAAI,SAAY;IAChB,IAAI,SAAQ;CAEZ"}
|
package/dist/compression.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
1
|
+
import zlib, { type InputType } from "node:zlib";
|
|
2
|
+
import type { OutgoingHttpHeaders } from "node:http";
|
|
3
|
+
import type { Request } from "./Request";
|
|
4
|
+
import type { Response } from "./Response";
|
|
4
5
|
export declare function brotliPreloadSync(data: InputType): Buffer<ArrayBufferLike>;
|
|
5
6
|
export declare function gzipPreloadSync(data: InputType): Buffer<ArrayBufferLike>;
|
|
6
7
|
export declare function getCompressionStreamByEncoding(contentEncoding: "br" | "gzip"): zlib.BrotliCompress;
|
|
7
|
-
export declare function handleRequestCompressed(request:
|
|
8
|
+
export declare function handleRequestCompressed(request: Request, response: Response, headers: OutgoingHttpHeaders, data: InputType): void;
|
|
8
9
|
//# sourceMappingURL=compression.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compression.d.ts","sourceRoot":"","sources":["../src/compression.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"compression.d.ts","sourceRoot":"","sources":["../src/compression.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,EAAE,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AA0B3C,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,2BAEhD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,2BAE9C;AAED,wBAAgB,8BAA8B,CAAC,eAAe,EAAE,IAAI,GAAG,MAAM,uBAE5E;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,mBAAmB,EAAE,IAAI,EAAE,SAAS,QAK1H"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export * from "./Middleware";
|
|
2
2
|
export * from "./middlewares";
|
|
3
|
-
export type {
|
|
3
|
+
export type { Request } from "./Request";
|
|
4
|
+
export type { Response } from "./Response";
|
|
4
5
|
export * from "./Server";
|
|
5
6
|
export * from "./StaticServer";
|
|
6
|
-
export { Middleware, Options } from "./types";
|
|
7
|
+
export type { GenericMiddleware, Middleware, Options, RequestParams, RequestQueryParams, TupleMiddleware } from "./types";
|
|
7
8
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,YAAY,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var m=class{listeners};var
|
|
2
|
-
`,t)}}#
|
|
1
|
+
var m=class{listeners};var ye=void 0;import S from"node:fs";import c from"node:path";import u from"node:zlib";var oe={params:{[u.constants.BROTLI_PARAM_MODE]:u.constants.BROTLI_MODE_TEXT,[u.constants.BROTLI_PARAM_QUALITY]:11}},H={params:{[u.constants.BROTLI_PARAM_MODE]:u.constants.BROTLI_MODE_TEXT,[u.constants.BROTLI_PARAM_QUALITY]:4}},ne={level:9},$={level:3};function I(o){return u.brotliCompressSync(o,oe)}function _(o){return u.gzipSync(o,ne)}function C(o){return o==="br"?u.createBrotliCompress(H):u.createGzip($)}function B(o,e,t,r){let n=/\bbr\b/.test(o.headers["accept-encoding"]);t["Content-Encoding"]=n?"br":"gzip",e.writeHead(200,t).end(n?u.brotliCompressSync(r,H):u.gzipSync(r,$))}var k=[["js",{isText:!0,mimeType:"text/javascript"}],["css",{isText:!0,mimeType:"text/css"}],["ico",{mimeType:"image/x-icon"}],process.env.NODE_ENV==="development"?["css.map",{isText:!0,mimeType:"application/json"}]:null,process.env.NODE_ENV==="development"?["js.map",{isText:!0,mimeType:"application/json"}]:null,["jpg",{mimeType:"image/jpeg"}],["jpeg",{mimeType:"image/jpeg"}]].filter(Boolean);var G=[...process.env.NODE_ENV==="production"?["/index.js","/favicon.ico"]:[]];var se={mimeType:"application/octet-stream"},w=class extends m{constructor({src:e="public",urlPrefix:t="",requestRegExp:r,extensions:n=k,resolved:s,restricted:a,preloaded:p="default"}={}){if(super(),!c.isAbsolute(e)){let[,i]=process.argv;e=c.resolve(S.statSync(i).isDirectory()?i:c.dirname(i),e)}if(this.#e=e,this.#t=t,this.#r=new RegExp(`^${c.join("/",t,"/")}`),n)for(let i of n)i&&this.#a(...i);if(s)for(let i of s)i&&this.#u(...i);if(a)for(let i of a)i&&this.#c(i);if(p){p==="default"&&(p=G);for(let i of p)i&&this.#f(i)}this.listeners={GET:[[r??new RegExp(`^${c.join("/",this.#t,"/")}(\\w[^\\/]*/)*[^\\/]+\\.[^\\/]`),this.#l]]}}#e;#t;#r;#o=new Map;#n=new Map;#s=new Set;#i=new Map;#p(e){return this.#o.get(e.slice(Math.max(0,e.lastIndexOf(".")+1)))??se}#a(e,t){this.#o.set(e,{...t,name:e})}#u(e,t){this.#n.set(e,c.isAbsolute(t)?t:c.join(this.#e,t))}#c(e){this.#s.add(c.join(this.#e,e))}#f(e){e=this.#n.get(e)??c.join(this.#e,e);try{let{isText:t}=this.#p(e),r=S.readFileSync(e,t?"utf8":null);this.#i.set(e,t?{br:I(r),gzip:_(r)}:r)}catch(t){console.warn(`\u26A0\uFE0F inSite Static Server: Unable to preload ${e}`,`
|
|
2
|
+
`,t)}}#l=(e,t)=>{let r=decodeURI(e.url).replace(this.#r,"").replaceAll("../","");if(r=this.#n.get(r)??c.join(this.#e,r),this.#s.has(r))return!1;if(!S.existsSync(r))return t.notFound();let{mimeType:n,isText:s}=this.#p(r),a=s?/\bbr\b/.test(e.headers["accept-encoding"])?"br":"gzip":null;t.writeHead(200,{"Content-Type":n+(s?"; charset=utf-8":""),...a&&{"Content-Encoding":a}});let p=this.#i.get(r);return p?t.end(s&&a?p[a]:p):new Promise(i=>{let f=S.createReadStream(r).on("error",()=>i(!1));a&&(f=f.pipe(C(a))),f.on("end",i),f.pipe(t)})}};function y(){}function ie(o,e=0,t={}){let{leading:r=!1,trailing:n=!0}=t,{maxWait:s=1/0}=t,a,p,i,f,O,R,d,P,A=async()=>{let g=Date.now();g>=i?(a=void 0,i=void 0,clearTimeout(p),typeof d=="function"&&await d(),l.resolve(P),l.promise.isResolved=!0,R=r):(clearTimeout(a),a=setTimeout(A,i-g))},q=Number.isFinite(s)?()=>{d===h&&(d=!1),h(),p=setTimeout(q,s)}:null;async function h(){return P=await o.apply(f,O)}r&&typeof r=="boolean"&&(r=h),R=r,n&&typeof n=="boolean"&&(n=h),d=n;let l=Object.assign(function(...g){return O=g,f=this,i=Date.now()+e,d=n,l.promise.isResolved&&(l.promise=Object.assign(new Promise(re=>{l.resolve=re,typeof R=="function"&&(R(),R=!1,d===h&&(d=!1)),a||(a=setTimeout(A,e),q&&(p=setTimeout(q,s)))}),{isResolved:!1})),l.promise},{callback:o,promise:Object.assign(Promise.resolve(),{isResolved:!0}),resolve:y,run:h,clear:async g=>{clearTimeout(a),a=void 0,clearTimeout(p),l.promise.isResolved=!0,l.resolve(g?await h():P)}});return l}ie.noop=Object.assign(()=>{},{callback:y,promise:Object.assign(Promise.resolve(),{isResolved:!0}),resolve:y,run:y,clear:y});function L(o){for(let e in o)return!1;return!0}function D(o,e,t,r,n=!0){return Array.isArray(o)&&(o=o.length),typeof r!="string"&&(n=r??!0,r=t),(n?`${o}\xA0`:"")+D.raw(o,e,t,r)}D.raw=(o,e,t,r=t)=>{o=Math.abs(o);let n=o%10,s=o%100;return n===1&&s!==11?e:n>=2&&n<=4&&!(s>=12&&s<=15)?t:r};var{INSITE_TITLE:pe}=process.env,U={};for(let o in process.env)o.startsWith("INSITE_CLIENT_")&&(U[o.replace(/INSITE_CLIENT_/,"").toLowerCase()]=process.env[o]);var ae={"Content-Type":"text/html; charset=utf-8"},N=class extends m{constructor({requestRegExp:e=/.*/,globals:t={},title:r=pe??"inSite",css:n=[],rootId:s="root"}={}){super(),this.listeners={GET:[[e,this.#n]]},this.#e=r,this.#t=Array.isArray(n)?n:[n],this.#r=s,Object.assign(t,U),this.#o=`<!DOCTYPE html><html lang="ru"><head><meta charset="utf-8" /><meta name="viewport" content="minimum-scale=1, initial-scale=1, width=device-width" /><title>${this.#e}</title>${this.#t.map(a=>`<link rel="stylesheet" href="${a}" />`).join("")}${L(t)?"":`<script>globalThis.__insite=${JSON.stringify(t)};</script>`}<script type="text/javascript" src="/index.js" defer></script></head><body><div id="${this.#r}"></div></body></html>`}#e;#t;#r;#o;#n=(e,t)=>B(e,t,ae,this.#o)};import{createServer as he,resolveSSL as xe,showServerListeningMessage as ee}from"insite-common/backend";import{IncomingMessage as fe}from"node:http";import le from"node:querystring";var T=Symbol("server"),E=Symbol("request"),x=Symbol("match");var ue=/\/(?:(\*)|:([^/?]+)(\?(.*))?)/g;function z(o,e=0){return o.replaceAll(ue,(t,r,n,s,a)=>{if(r)return`/(?<__${e++}>.*?)`;let p=`/(?<${n}>[^/]+)`;return s?`(?:${p}${a?z(a,e):""})?`:p})}function F(o){return new RegExp(`^${z(o)}/?$`)}var ce=/^__/;function Q(o){if(o[x]){let e=o[x];delete o[x];let t=[void 0,...e.slice(1)];if(e.groups)for(let[r,n]of Object.entries(e.groups))t[r.replace(ce,"")]=n;return t}return[]}function W(o){return o.querystring?.split("&").reduce((e,t)=>{let[r,n]=t.split("=");return e[r]=decodeURIComponent(n||""),e},{})??{}}function J(o,e){let t=e.exec(o.path);return t?(o[x]=t,!0):!1}var j=class{constructor(e){this.#e=e}#e;stream(){return this.#e}#t;text(){return new Promise((e,t)=>{if(this.#t)e(this.#t);else{let r="";this.#e.on("data",n=>{r+=n}),this.#e.on("end",()=>{e(this.#t=r)}),this.#e.on("error",t)}})}async bytes(){return new TextEncoder().encode(await this.text())}async arrayBuffer(){return(await this.bytes()).buffer}async json(){return JSON.parse(await this.text())}async urlEncoded(){return le.parse(await this.text())}},b=class extends fe{path;querystring;_addHeaderLine(e,t,r){super._addHeaderLine(e,t,r),this.path||([this.path,this.querystring]=this.url.split("?",2))}[x];#e;get params(){return this.#e??=Q(this)}#t;get query(){return this.#t??=W(this)}#r;get body(){return this.#r??=new j(this)}};import{ServerResponse as de}from"node:http";var M=class extends de{[T];[E];text(e){return this.writeHead(200,{"Content-Type":"text/plain; charset=utf-8","Content-Length":Buffer.byteLength(e)}).end(e)}json(e){let t=JSON.stringify(e);return this.writeHead(200,{"Content-Type":"application/json; charset=utf-8","Content-Length":Buffer.byteLength(t)}).end(t)}urlEncoded(e){let t=new URLSearchParams(e).toString();return this.writeHead(200,{"Content-Type":"application/x-www-form-urlencoded; charset=utf-8","Content-Length":Buffer.byteLength(t)}).end(t)}stream(e,t){return this.writeHead(200,t),e.pipe(this)}error(e,t){return this[T]._throw(this,e,t)}badRequest(e){return this.error(400,e)}unauthorized(e){return this.error(401,e)}forbidden(e){return this.error(403,e)}notFound(e){return this.error(404,e)}requestTimeout(e){return this.error(408,e)}gone(e){return this.error(410,e)}internalServerError(e){return this.error(500,e)}serviceUnavailable(e){return this.error(503,e)}};var me=["DELETE","GET","PATCH","POST","PUT"];function K(o){return me.includes(o)||o==="ALL"}function V(o){return Array.isArray(o)}function X(o){return!Array.isArray(o)}function Y(o,e){return!!(o&&e[o])}function Z(o){return!!o&&"emit"in o}var v=class o{constructor({port:e,ssl:t,listeners:r,errors:n,server:s},a=[]){if(Z(s)?(this.server=s,new Promise(p=>void(s.listening?p():s.on("listening",p))).then(()=>ee(this))):(this.server=he(o.makeProps({ssl:t,server:s})),this.server.listen(typeof e=="string"?Number.parseInt(e):e??(this.isS?443:80),()=>ee(this))),r)for(let[p,i]of Object.entries(r))for(let[f,O]of i)this.addRequestListener(p,f,O);if(n)for(let p of Object.keys(n)){let i=Number.parseInt(p);i&&(this.#r[i]?Object.assign(this.#r[i],n[i]):this.#r[i]=n[i])}if(a)for(let p of a)p&&this.addMiddleware(p);this.server.on("request",this.#t)}icon="\u{1F578}\uFE0F ";name="HTTP";get protocol(){return`http${this.isS?"s":""}`}server;get isS(){return"setSecureContext"in this.server}#e={POST:[],GET:[],PUT:[],PATCH:[],DELETE:[]};#t=async(e,t)=>{if(t[T]=this,t[E]=e,!("status"in e)&&Y(e.method,this.#e)){for(let[r,n]of this.#e[e.method])if(J(e,r)&&await n(e,t)!==!1)return}t.notFound()};#r={400:{content:"Bad Request"},401:{content:"Unauthorized"},403:{content:"Forbidden"},404:{content:"Not Found"},408:{content:"Request Timeout"},410:{content:"Gone"},500:{content:"Internal Server Error"},503:{content:"Service Unavailable"},default:{headers:{"Content-Type":"text/plain; charset=utf-8"},content:"",handler(e,t,{statusCode:r,headers:n,content:s}){return t.writeHead(r,n).end(s)}}};_throw(e,t,r){typeof r=="string"&&(r={content:r});let{handler:n,...s}={...this.#r.default,...this.#r[t],...r};return n?n(e[E],e,{...s,statusCode:t}):e}addRequestListener(e,t,r){if(typeof t=="string"&&(t=F(t)),e&&e!=="ALL")this.#e[e]?.push([t,r]);else for(let n of Object.keys(this.#e))this.addRequestListener(n,t,r);return this}addMiddleware(e){if(e instanceof m){for(let[t,r]of Object.entries(e.listeners))for(let[n,s]of r)this.addRequestListener(t,n,s);e.bindTo?.(this)}else if(V(e)){X(e)&&(e=[e]);for(let t of e)this.addRequestListener(...t.length===2?["GET",...t]:t)}else this.#o(e);return this}#o(e,t="GET",r=""){for(let[n,s]of Object.entries(e))typeof s=="function"?this.addRequestListener(t,`${r}${n}`,s):K(n)?this.#o(s,n,r):this.#o(s,t,`${r}${n}`)}post(e,t){return this.addRequestListener("POST",e,t),this}get(e,t){return this.addRequestListener("GET",e,t),this}put(e,t){return this.addRequestListener("PUT",e,t),this}patch(e,t){return this.addRequestListener("PATCH",e,t),this}delete(e,t){return this.addRequestListener("DELETE",e,t),this}static makeProps({ssl:e,server:t}){return{...xe(e),IncomingMessage:b,ServerResponse:M,...t}}};var te=class extends v{constructor(e,t,r=[]){super(t,[new w(e),...r])}name="Static";icon="\u{1F6D2}"};export{m as ClassMiddleware,v as HTTPServer,ye as InitialsMiddleware,w as StaticMiddleware,te as StaticServer,N as TemplateMiddleware};
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/Middleware.ts", "../src/middlewares/Initials.ts", "../src/middlewares/Static/Static.ts", "../src/compression.ts", "../src/middlewares/Static/extensions.ts", "../src/middlewares/Static/preloaded.ts", "../../../../@nesvet/npm/n/src/noop.ts", "../../../../@nesvet/npm/n/src/debounce.ts", "../../../../@nesvet/npm/n/src/isEmpty.ts", "../../../../@nesvet/npm/n/src/howmuch.ts", "../src/middlewares/Template.ts", "../src/Server.ts", "../src/
|
|
4
|
-
"sourcesContent": ["import { InSiteHTTPServer } from \"./Server\";\nimport { Handler, Method, RegExpOrString } from \"./types\";\n\n\nexport class InSiteServerMiddleware {\n\tlisteners!: Partial<Record<Method, [ RegExpOrString, Handler ][]>>;\n\tbindTo?(server: InSiteHTTPServer): void;\n}\n", "//#if _SERVER && _SSR\n// import { initialsMap } from \"@insite/subscriptions\";\n// import { handleRequestCompressed } from \"../compression\";\n// import { InSiteServerMiddleware } from \"../Middleware\";\n\n\n// const headers = { \"Content-Type\": \"text/javascript; charset=utf-8\" };\n\n\n// export class InSiteInitialsMiddleware extends InSiteServerMiddleware {\n// \tconstructor(options = {}) {\n// \t\tsuper();\n// \t\tconst {\n// \t\t\trequestRegExp = /^\\/initials\\/?\\?/\n// \t\t} = options;\n\n// \t\tthis.listeners = { GET: [\n// \t\t\t[ requestRegExp, this.handler ]\n// \t\t] };\n\n// \t}\n\n// \thandler = (request, response) => {\n// \t\tconst initials = initialsMap.getWithTimeout(request.url.split(\"?\")[1]);\n\n// \t\tif (initials)\n// \t\t\thandleRequestCompressed(request, response, headers, `window.__initials = [${initials.join()}];\\ndocument.currentScript.remove();`);\n// \t\telse\n// \t\t\treturn false;\n// \t};\n\n// }\n\n\n//#else\nexport const InSiteInitialsMiddleware = undefined;\n\n\n//#endif\n", "import fs from \"node:fs\";\nimport { IncomingMessage } from \"node:http\";\nimport path from \"node:path\";\nimport { Readable } from \"node:stream\";\nimport { brotliPreloadSync, getCompressionStreamByEncoding, gzipPreloadSync } from \"../../compression\";\nimport { InSiteServerMiddleware } from \"../../Middleware\";\nimport { InSiteServerResponse } from \"../../Response\";\nimport { defaultExtensions } from \"./extensions\";\nimport { defaultPreloaded } from \"./preloaded\";\nimport { Extension, Options } from \"./types\";\n\n\nconst nullExtension = {\n\tmimeType: \"application/octet-stream\"\n};\n\n\nexport class InSiteStaticMiddleware extends InSiteServerMiddleware {\n\tconstructor({\n\t\tsrc = \"public\",\n\t\turlPrefix = \"\",\n\t\trequestRegExp,\n\t\textensions = defaultExtensions,\n\t\tresolved,\n\t\trestricted,\n\t\tpreloaded = \"default\"\n\t}: Options = {}) {\n\t\tsuper();\n\t\t\n\t\tif (!path.isAbsolute(src)) {\n\t\t\tconst [ , entryPoint ] = process.argv;\n\t\t\tsrc = path.resolve(fs.statSync(entryPoint).isDirectory() ? entryPoint : path.dirname(entryPoint), src);\n\t\t}\n\t\t\n\t\tthis.#src = src;\n\t\tthis.#urlPrefix = urlPrefix;\n\t\tthis.#urlPrefixRegExp = new RegExp(`^${path.join(\"/\", urlPrefix, \"/\")}`);\n\t\t\n\t\tif (extensions)\n\t\t\tfor (const extension of extensions)\n\t\t\t\tif (extension)\n\t\t\t\t\tthis.#addExtension(...extension);\n\t\t\n\t\tif (resolved)\n\t\t\tfor (const resolvee of resolved)\n\t\t\t\tif (resolvee)\n\t\t\t\t\tthis.#resolve(...resolvee);\n\t\t\n\t\tif (restricted)\n\t\t\tfor (const fileName of restricted)\n\t\t\t\tif (fileName)\n\t\t\t\t\tthis.#restrict(fileName);\n\t\t\n\t\tif (preloaded) {\n\t\t\tif (preloaded === \"default\")\n\t\t\t\tpreloaded = defaultPreloaded;\n\t\t\t\n\t\t\tfor (const fileName of preloaded)\n\t\t\t\tif (fileName)\n\t\t\t\t\tthis.#preload(fileName);\n\t\t}\n\t\t\n\t\tthis.listeners = { GET: [\n\t\t\t[ requestRegExp ?? new RegExp(`^${path.join(\"/\", this.#urlPrefix, \"/\")}(\\\\w[^\\\\/]*/)*[^\\\\/]+\\\\.[^\\\\/]`), this.#handler ]\n\t\t] };\n\t\t\n\t}\n\t\n\t#src;\n\t#urlPrefix;\n\t#urlPrefixRegExp;\n\t\n\t#extensions = new Map();\n\t\n\t#resolved = new Map();\n\t\n\t#restricted = new Set();\n\t\n\t#preloaded = new Map();\n\t\n\t#getExtensionBy(fileName: string) {\n\t\treturn this.#extensions.get(fileName.slice(Math.max(0, fileName.lastIndexOf(\".\") + 1))) ?? nullExtension;\n\t}\n\t\n\t#addExtension(name: string, extension: Extension[1]) {\n\t\tthis.#extensions.set(name, { ...extension, name });\n\t\t\n\t}\n\t\n\t#resolve(url: string, fileName: string) {\n\t\tthis.#resolved.set(url, path.isAbsolute(fileName) ? fileName : path.join(this.#src, fileName));\n\t\t\n\t}\n\t\n\t#restrict(fileName: string) {\n\t\tthis.#restricted.add(path.join(this.#src, fileName));\n\t\t\n\t}\n\t\n\t#preload(fileName: string) {\n\t\tfileName = this.#resolved.get(fileName) ?? path.join(this.#src, fileName);\n\t\t\n\t\ttry {\n\t\t\tconst { isText } = this.#getExtensionBy(fileName);\n\t\t\tconst fileData = fs.readFileSync(fileName, isText ? \"utf8\" : null);\n\t\t\tthis.#preloaded.set(fileName, isText ? {\n\t\t\t\tbr: brotliPreloadSync(fileData),\n\t\t\t\tgzip: gzipPreloadSync(fileData)\n\t\t\t} : fileData);\n\t\t} catch (error) {\n\t\t\tconsole.warn(`\u26A0\uFE0F inSite Static Server: Unable to preload ${fileName}`, \"\\n\", error);\n\t\t}\n\t\t\n\t}\n\t\n\t#handler = (request: IncomingMessage, response: InSiteServerResponse) => {\n\t\tlet fileName = decodeURI(request.url!).replace(this.#urlPrefixRegExp, \"\").replaceAll(\"../\", \"\");\n\t\tfileName = this.#resolved.get(fileName) ?? path.join(this.#src, fileName);\n\t\t\n\t\tif (this.#restricted.has(fileName))\n\t\t\treturn false;\n\t\t\n\t\tif (!fs.existsSync(fileName))\n\t\t\treturn response.notFound();\n\t\t\n\t\tconst { mimeType, isText } = this.#getExtensionBy(fileName);\n\t\tconst contentEncoding = isText ? /\\bbr\\b/.test(request.headers[\"accept-encoding\"] as string) ? \"br\" : \"gzip\" : null;\n\t\t\n\t\tresponse.writeHead(200, {\n\t\t\t\"Content-Type\": mimeType + (isText ? \"; charset=utf-8\" : \"\"),\n\t\t\t...contentEncoding && { \"Content-Encoding\": contentEncoding }\n\t\t});\n\t\t\n\t\tconst preloaded = this.#preloaded.get(fileName);\n\t\t\n\t\tif (preloaded)\n\t\t\treturn response.end(isText && contentEncoding ? preloaded[contentEncoding] : preloaded);\n\t\t\n\t\treturn new Promise(resolve => {\n\t\t\tlet stream: Readable = fs.createReadStream(fileName).on(\"error\", () => resolve(false));\n\t\t\t\n\t\t\tif (contentEncoding)\n\t\t\t\tstream = stream.pipe(getCompressionStreamByEncoding(contentEncoding));\n\t\t\t\n\t\t\tstream.on(\"end\", resolve);\n\t\t\t\n\t\t\tstream.pipe(response);\n\t\t\t\n\t\t});\n\t};\n\t\n}\n", "import { IncomingMessage, OutgoingHttpHeaders } from \"node:http\";\nimport zlib, { InputType } from \"node:zlib\";\nimport { InSiteServerResponse } from \"./Response\";\n\n\nconst brotliPreloadOptions = {\n\tparams: {\n\t\t[zlib.constants.BROTLI_PARAM_MODE]: zlib.constants.BROTLI_MODE_TEXT,\n\t\t[zlib.constants.BROTLI_PARAM_QUALITY]: 11\n\t}\n};\n\nconst brotliRuntimeOptions = {\n\tparams: {\n\t\t[zlib.constants.BROTLI_PARAM_MODE]: zlib.constants.BROTLI_MODE_TEXT,\n\t\t[zlib.constants.BROTLI_PARAM_QUALITY]: 4\n\t}\n};\n\nconst gzipPreloadOptions = {\n\tlevel: 9\n};\n\nconst gzipRuntimeOptions = {\n\tlevel: 3\n};\n\n\nexport function brotliPreloadSync(data: InputType) {\n\treturn zlib.brotliCompressSync(data, brotliPreloadOptions);\n}\n\nexport function gzipPreloadSync(data: InputType) {\n\treturn zlib.gzipSync(data, gzipPreloadOptions);\n}\n\nexport function getCompressionStreamByEncoding(contentEncoding: \"br\" | \"gzip\") {\n\treturn contentEncoding === \"br\" ? zlib.createBrotliCompress(brotliRuntimeOptions) : zlib.createGzip(gzipRuntimeOptions);\n}\n\nexport function handleRequestCompressed(request: IncomingMessage, response: InSiteServerResponse, headers: OutgoingHttpHeaders, data: InputType) {\n\tconst isBrotliAccepted = /\\bbr\\b/.test(request.headers[\"accept-encoding\"] as string);\n\theaders[\"Content-Encoding\"] = isBrotliAccepted ? \"br\" : \"gzip\";\n\tresponse.writeHead(200, headers).end(isBrotliAccepted ? zlib.brotliCompressSync(data, brotliRuntimeOptions) : zlib.gzipSync(data, gzipRuntimeOptions));\n\t\n}\n", "import { Extension } from \"./types\";\n\n\nexport const defaultExtensions = [\n\t\n\t[ \"js\", {\n\t\tisText: true,\n\t\tmimeType: \"text/javascript\"\n\t} ],\n\t\n\t[ \"css\", {\n\t\tisText: true,\n\t\tmimeType: \"text/css\"\n\t} ],\n\t\n\t[ \"ico\", {\n\t\tmimeType: \"image/x-icon\"\n\t} ],\n\t\n\tprocess.env.NODE_ENV === \"development\" ? [ \"css.map\", {\n\t\tisText: true,\n\t\tmimeType: \"application/json\"\n\t} ] : null,\n\t\n\tprocess.env.NODE_ENV === \"development\" ? [ \"js.map\", {\n\t\tisText: true,\n\t\tmimeType: \"application/json\"\n\t} ] : null,\n\t\n\t[ \"jpg\", {\n\t\tmimeType: \"image/jpeg\"\n\t} ],\n\t\n\t[ \"jpeg\", {\n\t\tmimeType: \"image/jpeg\"\n\t} ]\n\t\n].filter(Boolean) as Extension[];\n", "export const defaultPreloaded = [\n\t...process.env.NODE_ENV === \"production\" ? [\n\t\t//#if _SSR\n\t\t// \"/index.css\",\n\t\t//#endif\n\t\t\"/index.js\",\n\t\t\"/favicon.ico\"\n\t] : []\n];\n", "export function noop() { /**/ }\n", "import { noop } from \"./noop.js\";\n\n\ntype Callback<Result> = (...args: unknown[]) => Result;\ntype FunctionOrBoolean = (() => unknown) | boolean;\ntype Options = { leading?: FunctionOrBoolean; maxWait?: number; trailing?: FunctionOrBoolean };\ntype NumberOrUndefined = number | undefined;\n\ntype DebouncedFunction<Result> = {\n\t(this: unknown, ..._args: unknown[]): Promise<Result>;\n};\n\nexport type Debounced<Result> = {\n\tcallback: Callback<Result>;\n\tpromise: {\n\t\tisResolved: boolean;\n\t} & Promise<unknown>;\n\tresolve: (value: Result) => void;\n\trun(): Promise<Result>;\n\tclear(shouldRun?: boolean): Promise<void>;\n} & DebouncedFunction<Result>;\n\n\nexport function debounce<Result>(callback: Callback<Result>, limit = 0, options: Options = {}) {\n\tlet { leading = false, trailing = true } = options;\n\tconst { maxWait = Infinity } = options;\n\t\n\tlet timeout: NumberOrUndefined;\n\tlet maxWaitTimeout: NumberOrUndefined;\n\tlet end: NumberOrUndefined;\n\tlet context: unknown;\n\tlet args: unknown[];\n\tlet initial: FunctionOrBoolean;\n\tlet final: FunctionOrBoolean;\n\tlet result: Result;\n\t\n\tconst expired = async () => {\n\t\t\n\t\tconst n = Date.now();\n\t\t\n\t\tif (n >= end!) {\n\t\t\ttimeout = undefined;\n\t\t\tend = undefined;\n\t\t\tclearTimeout(maxWaitTimeout);\n\t\t\tif (typeof final == \"function\")\n\t\t\t\tawait final();\n\t\t\tdebounced.resolve(result);\n\t\t\tdebounced.promise.isResolved = true;\n\t\t\tinitial = leading;\n\t\t} else {\n\t\t\tclearTimeout(timeout);\n\t\t\ttimeout = setTimeout(expired, end! - n);\n\t\t}\n\t\t\n\t};\n\t\n\tconst maxWaitExpired = Number.isFinite(maxWait) ? () => {\n\t\t\n\t\tif (final === run)\n\t\t\tfinal = false;\n\t\trun();\n\t\tmaxWaitTimeout = setTimeout(maxWaitExpired as TimerHandler, maxWait);\n\t\t\n\t} : null;\n\t\n\tasync function run() {\n\t\treturn (result = await callback.apply(context, args));\n\t}\n\t\n\tif (leading && typeof leading == \"boolean\")\n\t\tleading = run;\n\tinitial = leading;\n\t\n\tif (trailing && typeof trailing == \"boolean\")\n\t\ttrailing = run;\n\tfinal = trailing;\n\t\n\tconst debounced: Debounced<Result> = Object.assign(function (..._args) {\n\t\targs = _args;\n\t\tcontext = this;// eslint-disable-line no-invalid-this\n\t\t\n\t\tend = Date.now() + limit;\n\t\tfinal = trailing;\n\t\t\n\t\tif (debounced.promise.isResolved)\n\t\t\tdebounced.promise = Object.assign(new Promise(resolve => {\n\t\t\t\tdebounced.resolve = resolve;\n\t\t\t\t\n\t\t\t\tif (typeof initial == \"function\") {\n\t\t\t\t\tinitial();\n\t\t\t\t\tinitial = false;\n\t\t\t\t\tif (final === run)\n\t\t\t\t\t\tfinal = false;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (!timeout) {\n\t\t\t\t\ttimeout = setTimeout(expired, limit);\n\t\t\t\t\tif (maxWaitExpired)\n\t\t\t\t\t\tmaxWaitTimeout = setTimeout(maxWaitExpired, maxWait);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}), {\n\t\t\t\tisResolved: false\n\t\t\t});\n\t\t\n\t\treturn debounced.promise;\n\t} as DebouncedFunction<Result>, {\n\t\tcallback,\n\t\tpromise: Object.assign(Promise.resolve(), {\n\t\t\tisResolved: true\n\t\t}),\n\t\tresolve: noop,\n\t\trun,\n\t\tclear: async (shouldRun?: boolean) => {\n\t\t\t\n\t\t\tclearTimeout(timeout);\n\t\t\ttimeout = undefined;\n\t\t\t\n\t\t\tclearTimeout(maxWaitTimeout);\n\t\t\t\n\t\t\tdebounced.promise.isResolved = true;\n\t\t\tdebounced.resolve(shouldRun ? await run() : result);\n\t\t\t\n\t\t}\n\t});\n\t\n\treturn debounced;\n}\n\n\ndebounce.noop = Object.assign(() => { /**/ }, {\n\tcallback: noop,\n\tpromise: Object.assign(Promise.resolve(), {\n\t\tisResolved: true\n\t}),\n\tresolve: noop,\n\trun: noop,\n\tclear: noop\n}) as unknown as Debounced<void>;\n\n\nexport function throttle<Result>(callback: Callback<Result>, limit?: number, options?: Options) {\n\treturn debounce(callback, limit, {\n\t\tmaxWait: limit,\n\t\tleading: true,\n\t\ttrailing: true,\n\t\t...options\n\t});\n}\n", "export function isEmpty(object: object) {\n\tfor (const _ in object)// eslint-disable-line guard-for-in, no-unreachable-loop\n\t\treturn false;\n\t\n\treturn true;\n}\n", "export function howmuch(number: [] | number, one: string, two: string, five: boolean | string, shouldPrintNumber = true) {\n\tif (Array.isArray(number))\n\t\tnumber = number.length;\n\t\n\tif (typeof five != \"string\") {\n\t\tshouldPrintNumber = five ?? true;\n\t\tfive = two;\n\t}\n\t\n\t\n\treturn (shouldPrintNumber ? `${number}\u00A0` : \"\") + howmuch.raw(number, one, two, five);\n}\n\nhowmuch.raw = (number: number, one: string, two: string, five = two) => {\n\tnumber = Math.abs(number);\n\tconst u = number % 10;\n\tconst d = number % 100;\n\t\n\treturn (\n\t\t(u === 1 && d !== 11) ?\n\t\t\tone :\n\t\t\t((u >= 2 && u <= 4) && !(d >= 12 && d <= 15)) ?\n\t\t\t\ttwo :\n\t\t\t\tfive\n\t);\n};\n", "import { IncomingMessage } from \"node:http\";\nimport { isEmpty } from \"@nesvet/n\";\nimport { handleRequestCompressed } from \"../compression\";\nimport { InSiteServerMiddleware } from \"../Middleware\";\nimport { InSiteServerResponse } from \"../Response\";\n\n\nconst { INSITE_TITLE } = process.env;\n\nconst envGlobals: Record<string, unknown> = {};\nfor (const key in process.env)\n\tif (key.startsWith(\"INSITE_CLIENT_\"))\n\t\tenvGlobals[key.replace(/INSITE_CLIENT_/, \"\").toLowerCase()] = process.env[key];\n\nconst headers = { \"Content-Type\": \"text/html; charset=utf-8\" };\n\n\ntype Options = {\n\trequestRegExp?: RegExp;\n\tglobals?: Record<string, unknown>;\n\ttitle?: string;\n\tcss?: string | string[];\n\trootId?: string;\n};\n\nexport type { Options as TemplateMiddlewareOptions };\n\n\nexport class InSiteTemplateMiddleware extends InSiteServerMiddleware {\n\tconstructor({\n\t\trequestRegExp = /.*/,\n\t\tglobals = {},\n\t\ttitle = INSITE_TITLE ?? \"inSite\",\n\t\tcss = [],\n\t\trootId = \"root\"\n\t}: Options = {}) {\n\t\tsuper();\n\t\t\n\t\tthis.listeners = { GET: [\n\t\t\t[ requestRegExp, this.#handler ]\n\t\t] };\n\t\t\n\t\tthis.#title = title;\n\t\tthis.#css = Array.isArray(css) ? css : [ css ];\n\t\tthis.#rootId = rootId;\n\t\t\n\t\tObject.assign(globals, envGlobals);\n\t\t\n\t\tthis.#html =\n\t\t\t\"<!DOCTYPE html>\" +\n\t\t\t\"<html lang=\\\"ru\\\">\" +\n\t\t\t\"<head>\" +\n\t\t\t\"<meta charset=\\\"utf-8\\\" />\" +\n\t\t\t\"<meta name=\\\"viewport\\\" content=\\\"minimum-scale=1, initial-scale=1, width=device-width\\\" />\" +\n\t\t\t`<title>${this.#title}</title>` +\n\t\t\t`${this.#css.map(fileName => `<link rel=\"stylesheet\" href=\"${fileName}\" />`).join(\"\")}` +\n\t\t\t`${isEmpty(globals) ? \"\" : `<script>globalThis.__insite=${JSON.stringify(globals)};</script>`}` +\n\t\t\t\"<script type=\\\"text/javascript\\\" src=\\\"/index.js\\\" defer></script>\" +\n\t\t\t\"</head>\" +\n\t\t\t\"<body>\" +\n\t\t\t`<div id=\"${this.#rootId}\">` +\n\t\t\t\"</div>\" +\n\t\t\t\"</body>\" +\n\t\t\t\"</html>\";\n\t\t\n\t}\n\t\n\t#title;\n\t#css;\n\t#rootId;\n\t#html;\n\t\n\t#handler = (request: IncomingMessage, response: InSiteServerResponse) =>\n\t\thandleRequestCompressed(request, response, headers, this.#html);\n\t\n}\n", "import type http from \"node:http\";\nimport type https from \"node:https\";\nimport { createServer, resolveSSL, showServerListeningMessage } from \"insite-common/backend\";\nimport { InSiteServerMiddleware } from \"./Middleware\";\nimport { InSiteServerResponse } from \"./Response\";\nimport { inSiteRequestSymbol, inSiteServerSymbol } from \"./symbols\";\nimport {\n\ttype ErrorParams,\n\ttype Handler,\n\tisMiddlewareMethodMap,\n\tisMiddlewareRegExpStringMap,\n\tisMiddlewareTuple,\n\tisMiddlewareTupleOrArray,\n\tisRequestMethodAccepted,\n\tisServerServer,\n\ttype Listener,\n\ttype Method,\n\ttype Middleware,\n\ttype Options,\n\ttype RegExpOrString\n} from \"./types\";\n\n\nexport class InSiteHTTPServer {\n\tconstructor({\n\t\tport,\n\t\tssl,\n\t\tlisteners,\n\t\terrors,\n\t\tserver\n\t}: Options, middlewares: (false | Middleware | null | undefined)[] = []) {\n\t\t\n\t\tif (isServerServer(server)) {\n\t\t\tthis.server = server;\n\t\t\t\n\t\t\tnew Promise<void>(resolve => void (\n\t\t\t\tserver.listening ?\n\t\t\t\t\tresolve() :\n\t\t\t\t\tserver.on(\"listening\", resolve)\n\t\t\t)).then(() => showServerListeningMessage(this));\n\t\t\t\n\t\t} else {\n\t\t\tthis.server = createServer(InSiteHTTPServer.makeProps({ ssl, server }));\n\t\t\t\n\t\t\tthis.server.listen(\n\t\t\t\ttypeof port == \"string\" ?\n\t\t\t\t\tNumber.parseInt(port) :\n\t\t\t\t\tport ?? (this.isS ? 443 : 80),\n\t\t\t\t() => showServerListeningMessage(this)\n\t\t\t);\n\t\t}\n\t\t\n\t\tif (listeners)\n\t\t\tfor (const [ method, methodListeners ] of Object.entries(listeners) as [ \"ALL\" | Method, Listener[] ][])\n\t\t\t\tfor (const [ regExp, handler ] of methodListeners)\n\t\t\t\t\tthis.addRequestListener(method, regExp, handler);\n\t\t\n\t\tif (errors)\n\t\t\tfor (const statusCodeString of Object.keys(errors)) {\n\t\t\t\tconst statusCode = Number.parseInt(statusCodeString);\n\t\t\t\tif (statusCode)\n\t\t\t\t\tif (this.#errors[statusCode])\n\t\t\t\t\t\tObject.assign(this.#errors[statusCode], errors[statusCode]);\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.#errors[statusCode] = errors[statusCode];\n\t\t\t}\n\t\t\n\t\tif (middlewares)\n\t\t\tfor (const middleware of middlewares)\n\t\t\t\tif (middleware)\n\t\t\t\t\tthis.addMiddleware(middleware);\n\t\t\n\t\tthis.server.on(\"request\", this.#requestListener);\n\t\t\n\t}\n\t\n\ticon = \"\uD83D\uDD78\uFE0F \";\n\tname = \"HTTP\";\n\tget protocol() {\n\t\treturn `http${this.isS ? \"s\" : \"\"}`;\n\t}\n\t\n\tserver;\n\t\n\tget isS() {\n\t\treturn \"setSecureContext\" in this.server;\n\t}\n\t\n\t#listeners: Record<Method, Listener[]> = {\n\t\tPOST: [],\n\t\tGET: [],\n\t\tPUT: [],\n\t\tPATCH: [],\n\t\tDELETE: []\n\t};\n\t\n\t#requestListener = async (request: http.IncomingMessage, response: InSiteServerResponse) => {\n\t\tresponse[inSiteServerSymbol] = this;\n\t\tresponse[inSiteRequestSymbol] = request;\n\t\t\n\t\tif (!(\"status\" in request) && isRequestMethodAccepted(request.method, this.#listeners))\n\t\t\tfor (const [ regExp, handler ] of this.#listeners[request.method])\n\t\t\t\tif (regExp.test(request.url!) && await handler(request, response) !== false)\n\t\t\t\t\treturn;\n\t\t\n\t\tresponse.notFound();\n\t\t\n\t};\n\t\n\t#errors: Record<\"default\" | number, ErrorParams> = {\n\t\t400: {\n\t\t\tcontent: \"Bad Request\"\n\t\t},\n\t\t401: {\n\t\t\tcontent: \"Unauthorized\"\n\t\t},\n\t\t403: {\n\t\t\tcontent: \"Forbidden\"\n\t\t},\n\t\t404: {\n\t\t\tcontent: \"Not Found\"\n\t\t},\n\t\t408: {\n\t\t\tcontent: \"Request Timeout\"\n\t\t},\n\t\t410: {\n\t\t\tcontent: \"Gone\"\n\t\t},\n\t\t500: {\n\t\t\tcontent: \"Internal Server Error\"\n\t\t},\n\t\t503: {\n\t\t\tcontent: \"Service Unavailable\"\n\t\t},\n\t\tdefault: {\n\t\t\theaders: { \"Content-Type\": \"text/plain; charset=utf-8\" },\n\t\t\tcontent: \"\",\n\t\t\thandler(request, response, { statusCode, headers, content }) {\n\t\t\t\treturn response.writeHead(statusCode, headers).end(content);\n\t\t\t}\n\t\t}\n\t};\n\t\n\t_throw(response: InSiteServerResponse, statusCode: number, params?: ErrorParams | string) {\n\t\tif (typeof params == \"string\")\n\t\t\tparams = { content: params };\n\t\t\n\t\tconst {\n\t\t\thandler,\n\t\t\t...restParams\n\t\t} = {\n\t\t\t...this.#errors.default,\n\t\t\t...this.#errors[statusCode],\n\t\t\t...params\n\t\t};\n\t\t\n\t\treturn handler ? handler(response[inSiteRequestSymbol], response, {\n\t\t\t...restParams,\n\t\t\tstatusCode\n\t\t}) : response;\n\t}\n\t\n\taddRequestListener(method: \"ALL\" | Method, regExp: RegExpOrString, handler: Handler) {\n\t\tif (typeof regExp == \"string\")\n\t\t\tregExp = new RegExp(regExp);\n\t\t\n\t\tif (method && method !== \"ALL\")\n\t\t\tthis.#listeners[method]?.push([ regExp, handler ]);\n\t\telse\n\t\t\tfor (const specificMethod of Object.keys(this.#listeners) as Method[])\n\t\t\t\tthis.addRequestListener(specificMethod, regExp, handler);\n\t\t\n\t\treturn this;\n\t}\n\t\n\taddMiddleware(middleware: Middleware) {\n\t\tif (middleware instanceof InSiteServerMiddleware) {\n\t\t\tfor (const [ method, regExpOrStringArrayMap ] of Object.entries(middleware.listeners))\n\t\t\t\tfor (const [ regExpOrString, handler ] of regExpOrStringArrayMap)\n\t\t\t\t\tthis.addRequestListener(method as Method, regExpOrString, handler);\n\t\t\tmiddleware.bindTo?.(this);\n\t\t} else if (isMiddlewareTupleOrArray(middleware)) {\n\t\t\tif (isMiddlewareTuple(middleware))\n\t\t\t\tmiddleware = [ middleware ];\n\t\t\tfor (const params of middleware)\n\t\t\t\tthis.addRequestListener(...params.length === 2 ? [ \"GET\", ...params ] as const : params);\n\t\t} else if (isMiddlewareRegExpStringMap(middleware))\n\t\t\tfor (const [ key, value ] of Object.entries(middleware))\n\t\t\t\tthis.addRequestListener(\"GET\", key, value);\n\t\telse if (isMiddlewareMethodMap(middleware))\n\t\t\tfor (const [ method, regExpStringMap ] of Object.entries(middleware))\n\t\t\t\tfor (const [ regExpString, handler ] of Object.entries(regExpStringMap))\n\t\t\t\t\tthis.addRequestListener(method as Method, regExpString, handler);\n\t\t\n\t\treturn this;\n\t}\n\t\n\tpost(regExp: RegExpOrString, handler: Handler) {\n\t\tthis.addRequestListener(\"POST\", regExp, handler);\n\t\t\n\t\treturn this;\n\t}\n\t\n\tget(regExp: RegExpOrString, handler: Handler) {\n\t\tthis.addRequestListener(\"GET\", regExp, handler);\n\t\t\n\t\treturn this;\n\t}\n\t\n\tput(regExp: RegExpOrString, handler: Handler) {\n\t\tthis.addRequestListener(\"PUT\", regExp, handler);\n\t\t\n\t\treturn this;\n\t}\n\t\n\tpatch(regExp: RegExpOrString, handler: Handler) {\n\t\tthis.addRequestListener(\"PATCH\", regExp, handler);\n\t\t\n\t\treturn this;\n\t}\n\t\n\tdelete(regExp: RegExpOrString, handler: Handler) {\n\t\tthis.addRequestListener(\"DELETE\", regExp, handler);\n\t\t\n\t\treturn this;\n\t}\n\t\n\t\n\tstatic makeProps({ ssl, server }: Options): http.ServerOptions | https.ServerOptions {\n\t\treturn {\n\t\t\t...resolveSSL(ssl),\n\t\t\tServerResponse: InSiteServerResponse,\n\t\t\t...server\n\t\t};\n\t}\n\t\n}\n", "import { type IncomingMessage, ServerResponse } from \"node:http\";\nimport { inSiteRequestSymbol, inSiteServerSymbol } from \"./symbols\";\nimport type { InSiteHTTPServer } from \"./Server\";\nimport type { ErrorParams } from \"./types\";\n\n\nexport class InSiteServerResponse<Request extends IncomingMessage = IncomingMessage> extends ServerResponse<Request> {\n\t\n\t[inSiteServerSymbol]!: InSiteHTTPServer;\n\t[inSiteRequestSymbol]!: IncomingMessage;\n\t\n\terror(statusCode: number, params?: ErrorParams | string) {\n\t\treturn this[inSiteServerSymbol]._throw(this, statusCode, params);\n\t}\n\t\n\tbadRequest(params?: ErrorParams | string) {\n\t\treturn this.error(400, params);\n\t}\n\t\n\tunauthorized(params?: ErrorParams | string) {\n\t\treturn this.error(401, params);\n\t}\n\t\n\tforbidden(params?: ErrorParams | string) {\n\t\treturn this.error(403, params);\n\t}\n\t\n\tnotFound(params?: ErrorParams | string) {\n\t\treturn this.error(404, params);\n\t}\n\t\n\trequestTimeout(params?: ErrorParams | string) {\n\t\treturn this.error(408, params);\n\t}\n\t\n\tgone(params?: ErrorParams | string) {\n\t\treturn this.error(410, params);\n\t}\n\t\n\tinternalServerError(params?: ErrorParams | string) {\n\t\treturn this.error(500, params);\n\t}\n\t\n\tserviceUnavailable(params?: ErrorParams | string) {\n\t\treturn this.error(503, params);\n\t}\n\t\n}\n", "export const inSiteServerSymbol = Symbol(\"inSiteServer\");\nexport const inSiteRequestSymbol = Symbol(\"inSiteRequest\");\n", "import type http from \"node:http\";\nimport type https from \"node:https\";\nimport type { InSiteServerMiddleware } from \"./Middleware\";\nimport type { InSiteServerResponse } from \"./Response\";\n\n\nexport type ErrorParams = {\n\theaders?: http.OutgoingHttpHeader[] | http.OutgoingHttpHeaders;\n\tcontent: string;\n\thandler?(request: http.IncomingMessage, response: InSiteServerResponse, errorParams: Omit<ErrorParams, \"handler\"> & { statusCode: number }): InSiteServerResponse;\n};\n\nexport type Method = \"DELETE\" | \"GET\" | \"PATCH\" | \"POST\" | \"PUT\";\n\nexport type Handler = (request: http.IncomingMessage, response: InSiteServerResponse) => unknown;\n\nexport type Listener = [ RegExp, Handler ];\n\nexport type Options = {\n\tssl?: {\n\t\tcert: Buffer | string;\n\t\tkey: Buffer | string;\n\t};\n\tport?: number | string;\n\thttps?: boolean;\n\tlisteners?: Partial<Record<\"ALL\" | Method, Listener[]>>;\n\terrors?: Record<\"default\" | number, ErrorParams>;\n\tserver?: http.Server | http.ServerOptions | https.Server | https.ServerOptions;\n};\n\nexport type RegExpOrString = RegExp | string;\n\ntype MiddlewareTuple = readonly [ Method, RegExpOrString, Handler ] | readonly [ RegExpOrString, Handler ];\n\ntype MiddlewareRegExpStringMap = Record<string, Handler>;\n\ntype MiddlewareMethodMap = Record<Method, Record<string, Handler>>;\n\nexport type Middleware =\n\tInSiteServerMiddleware |\n\tMiddlewareMethodMap |\n\tMiddlewareRegExpStringMap |\n\tMiddlewareTuple |\n\tMiddlewareTuple[];\n\nexport function isMiddlewareMethodMap(middleware: Middleware): middleware is MiddlewareMethodMap {\n\treturn typeof Object.values(middleware)[0] == \"object\";\n}\n\nexport function isMiddlewareRegExpStringMap(middleware: Middleware): middleware is MiddlewareRegExpStringMap {\n\treturn typeof Object.values(middleware)[0] == \"function\";\n}\n\nexport function isMiddlewareTupleOrArray(middleware: Middleware): middleware is MiddlewareTuple | MiddlewareTuple[] {\n\treturn Array.isArray(middleware);\n}\n\nexport function isMiddlewareTuple(middleware: MiddlewareTuple | MiddlewareTuple[]): middleware is MiddlewareTuple {\n\treturn !Array.isArray(middleware);\n}\n\nexport function isRequestMethodAccepted(requestMethod: string | undefined, listeners: Record<string, unknown>): requestMethod is Method {\n\treturn Boolean(requestMethod && listeners[requestMethod]);\n}\n\nexport function isServerServer(serverOrOptions: Options[\"server\"]): serverOrOptions is http.Server | https.Server {\n\treturn !!serverOrOptions && \"emit\" in serverOrOptions;\n}\n", "import { InSiteStaticMiddleware, StaticMiddlewareOptions } from \"./middlewares/Static\";\nimport { InSiteHTTPServer } from \"./Server\";\nimport { Middleware, Options } from \"./types\";\n\n\nexport class InSiteStaticServer extends InSiteHTTPServer {\n\tconstructor(options: StaticMiddlewareOptions, serverOptions: Options, middlewares: Middleware[] = []) {\n\t\tsuper(serverOptions, [\n\t\t\tnew InSiteStaticMiddleware(options),\n\t\t\t...middlewares\n\t\t]);\n\t\t\n\t}\n\t\n\tname = \"Static\";\n\ticon = \"\uD83D\uDED2\";\n\t\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["
|
|
3
|
+
"sources": ["../src/Middleware.ts", "../src/middlewares/Initials.ts", "../src/middlewares/Static/Static.ts", "../src/compression.ts", "../src/middlewares/Static/extensions.ts", "../src/middlewares/Static/preloaded.ts", "../../../../@nesvet/npm/n/src/noop.ts", "../../../../@nesvet/npm/n/src/debounce.ts", "../../../../@nesvet/npm/n/src/isEmpty.ts", "../../../../@nesvet/npm/n/src/howmuch.ts", "../src/middlewares/Template.ts", "../src/Server.ts", "../src/Request.ts", "../src/symbols.ts", "../src/utils.ts", "../src/Response.ts", "../src/types.ts", "../src/StaticServer.ts"],
|
|
4
|
+
"sourcesContent": ["import { HTTPServer } from \"./Server\";\nimport { Handler, Method, RegExpOrString } from \"./types\";\n\n\nexport class ClassMiddleware {\n\tlisteners!: Partial<Record<Method, [ RegExpOrString, Handler ][]>>;\n\tbindTo?(server: HTTPServer): void;\n}\n", "//#if _SERVER && _SSR\n// import { initialsMap } from \"@insite/subscriptions\";\n// import { handleRequestCompressed } from \"../compression\";\n// import { Middleware } from \"../Middleware\";\n\n\n// const headers = { \"Content-Type\": \"text/javascript; charset=utf-8\" };\n\n\n// export class InitialsMiddleware extends Middleware {\n// \tconstructor(options = {}) {\n// \t\tsuper();\n// \t\tconst {\n// \t\t\trequestRegExp = /^\\/initials\\/?\\?/\n// \t\t} = options;\n\n// \t\tthis.listeners = { GET: [\n// \t\t\t[ requestRegExp, this.handler ]\n// \t\t] };\n\n// \t}\n\n// \thandler = (request, response) => {\n// \t\tconst initials = initialsMap.getWithTimeout(request.url.split(\"?\")[1]);\n\n// \t\tif (initials)\n// \t\t\thandleRequestCompressed(request, response, headers, `window.__initials = [${initials.join()}];\\ndocument.currentScript.remove();`);\n// \t\telse\n// \t\t\treturn false;\n// \t};\n\n// }\n\n\n//#else\nexport const InitialsMiddleware = undefined;\n\n\n//#endif\n", "import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { Readable } from \"node:stream\";\nimport { brotliPreloadSync, getCompressionStreamByEncoding, gzipPreloadSync } from \"../../compression\";\nimport { ClassMiddleware } from \"../../Middleware\";\nimport type { Request } from \"../../Request\";\nimport type { Response } from \"../../Response\";\nimport { defaultExtensions } from \"./extensions\";\nimport { defaultPreloaded } from \"./preloaded\";\nimport type { Extension, Options } from \"./types\";\n\n\nconst nullExtension = {\n\tmimeType: \"application/octet-stream\"\n};\n\n\nexport class StaticMiddleware extends ClassMiddleware {\n\tconstructor({\n\t\tsrc = \"public\",\n\t\turlPrefix = \"\",\n\t\trequestRegExp,\n\t\textensions = defaultExtensions,\n\t\tresolved,\n\t\trestricted,\n\t\tpreloaded = \"default\"\n\t}: Options = {}) {\n\t\tsuper();\n\t\t\n\t\tif (!path.isAbsolute(src)) {\n\t\t\tconst [ , entryPoint ] = process.argv;\n\t\t\tsrc = path.resolve(fs.statSync(entryPoint).isDirectory() ? entryPoint : path.dirname(entryPoint), src);\n\t\t}\n\t\t\n\t\tthis.#src = src;\n\t\tthis.#urlPrefix = urlPrefix;\n\t\tthis.#urlPrefixRegExp = new RegExp(`^${path.join(\"/\", urlPrefix, \"/\")}`);\n\t\t\n\t\tif (extensions)\n\t\t\tfor (const extension of extensions)\n\t\t\t\tif (extension)\n\t\t\t\t\tthis.#addExtension(...extension);\n\t\t\n\t\tif (resolved)\n\t\t\tfor (const resolvee of resolved)\n\t\t\t\tif (resolvee)\n\t\t\t\t\tthis.#resolve(...resolvee);\n\t\t\n\t\tif (restricted)\n\t\t\tfor (const fileName of restricted)\n\t\t\t\tif (fileName)\n\t\t\t\t\tthis.#restrict(fileName);\n\t\t\n\t\tif (preloaded) {\n\t\t\tif (preloaded === \"default\")\n\t\t\t\tpreloaded = defaultPreloaded;\n\t\t\t\n\t\t\tfor (const fileName of preloaded)\n\t\t\t\tif (fileName)\n\t\t\t\t\tthis.#preload(fileName);\n\t\t}\n\t\t\n\t\tthis.listeners = { GET: [\n\t\t\t[ requestRegExp ?? new RegExp(`^${path.join(\"/\", this.#urlPrefix, \"/\")}(\\\\w[^\\\\/]*/)*[^\\\\/]+\\\\.[^\\\\/]`), this.#handler ]\n\t\t] };\n\t\t\n\t}\n\t\n\t#src;\n\t#urlPrefix;\n\t#urlPrefixRegExp;\n\t\n\t#extensions = new Map();\n\t\n\t#resolved = new Map();\n\t\n\t#restricted = new Set();\n\t\n\t#preloaded = new Map();\n\t\n\t#getExtensionBy(fileName: string) {\n\t\treturn this.#extensions.get(fileName.slice(Math.max(0, fileName.lastIndexOf(\".\") + 1))) ?? nullExtension;\n\t}\n\t\n\t#addExtension(name: string, extension: Extension[1]) {\n\t\tthis.#extensions.set(name, { ...extension, name });\n\t\t\n\t}\n\t\n\t#resolve(url: string, fileName: string) {\n\t\tthis.#resolved.set(url, path.isAbsolute(fileName) ? fileName : path.join(this.#src, fileName));\n\t\t\n\t}\n\t\n\t#restrict(fileName: string) {\n\t\tthis.#restricted.add(path.join(this.#src, fileName));\n\t\t\n\t}\n\t\n\t#preload(fileName: string) {\n\t\tfileName = this.#resolved.get(fileName) ?? path.join(this.#src, fileName);\n\t\t\n\t\ttry {\n\t\t\tconst { isText } = this.#getExtensionBy(fileName);\n\t\t\tconst fileData = fs.readFileSync(fileName, isText ? \"utf8\" : null);\n\t\t\tthis.#preloaded.set(fileName, isText ? {\n\t\t\t\tbr: brotliPreloadSync(fileData),\n\t\t\t\tgzip: gzipPreloadSync(fileData)\n\t\t\t} : fileData);\n\t\t} catch (error) {\n\t\t\tconsole.warn(`\u26A0\uFE0F inSite Static Server: Unable to preload ${fileName}`, \"\\n\", error);\n\t\t}\n\t\t\n\t}\n\t\n\t#handler = (request: Request, response: Response) => {\n\t\tlet fileName = decodeURI(request.url).replace(this.#urlPrefixRegExp, \"\").replaceAll(\"../\", \"\");\n\t\tfileName = this.#resolved.get(fileName) ?? path.join(this.#src, fileName);\n\t\t\n\t\tif (this.#restricted.has(fileName))\n\t\t\treturn false;\n\t\t\n\t\tif (!fs.existsSync(fileName))\n\t\t\treturn response.notFound();\n\t\t\n\t\tconst { mimeType, isText } = this.#getExtensionBy(fileName);\n\t\tconst contentEncoding = isText ? /\\bbr\\b/.test(request.headers[\"accept-encoding\"] as string) ? \"br\" : \"gzip\" : null;\n\t\t\n\t\tresponse.writeHead(200, {\n\t\t\t\"Content-Type\": mimeType + (isText ? \"; charset=utf-8\" : \"\"),\n\t\t\t...contentEncoding && { \"Content-Encoding\": contentEncoding }\n\t\t});\n\t\t\n\t\tconst preloaded = this.#preloaded.get(fileName);\n\t\t\n\t\tif (preloaded)\n\t\t\treturn response.end(isText && contentEncoding ? preloaded[contentEncoding] : preloaded);\n\t\t\n\t\treturn new Promise(resolve => {\n\t\t\tlet stream: Readable = fs.createReadStream(fileName).on(\"error\", () => resolve(false));\n\t\t\t\n\t\t\tif (contentEncoding)\n\t\t\t\tstream = stream.pipe(getCompressionStreamByEncoding(contentEncoding));\n\t\t\t\n\t\t\tstream.on(\"end\", resolve);\n\t\t\t\n\t\t\tstream.pipe(response);\n\t\t\t\n\t\t});\n\t};\n\t\n}\n", "import zlib, { type InputType } from \"node:zlib\";\nimport type { OutgoingHttpHeaders } from \"node:http\";\nimport type { Request } from \"./Request\";\nimport type { Response } from \"./Response\";\n\n\nconst brotliPreloadOptions = {\n\tparams: {\n\t\t[zlib.constants.BROTLI_PARAM_MODE]: zlib.constants.BROTLI_MODE_TEXT,\n\t\t[zlib.constants.BROTLI_PARAM_QUALITY]: 11\n\t}\n};\n\nconst brotliRuntimeOptions = {\n\tparams: {\n\t\t[zlib.constants.BROTLI_PARAM_MODE]: zlib.constants.BROTLI_MODE_TEXT,\n\t\t[zlib.constants.BROTLI_PARAM_QUALITY]: 4\n\t}\n};\n\nconst gzipPreloadOptions = {\n\tlevel: 9\n};\n\nconst gzipRuntimeOptions = {\n\tlevel: 3\n};\n\n\nexport function brotliPreloadSync(data: InputType) {\n\treturn zlib.brotliCompressSync(data, brotliPreloadOptions);\n}\n\nexport function gzipPreloadSync(data: InputType) {\n\treturn zlib.gzipSync(data, gzipPreloadOptions);\n}\n\nexport function getCompressionStreamByEncoding(contentEncoding: \"br\" | \"gzip\") {\n\treturn contentEncoding === \"br\" ? zlib.createBrotliCompress(brotliRuntimeOptions) : zlib.createGzip(gzipRuntimeOptions);\n}\n\nexport function handleRequestCompressed(request: Request, response: Response, headers: OutgoingHttpHeaders, data: InputType) {\n\tconst isBrotliAccepted = /\\bbr\\b/.test(request.headers[\"accept-encoding\"] as string);\n\theaders[\"Content-Encoding\"] = isBrotliAccepted ? \"br\" : \"gzip\";\n\tresponse.writeHead(200, headers).end(isBrotliAccepted ? zlib.brotliCompressSync(data, brotliRuntimeOptions) : zlib.gzipSync(data, gzipRuntimeOptions));\n\t\n}\n", "import { Extension } from \"./types\";\n\n\nexport const defaultExtensions = [\n\t\n\t[ \"js\", {\n\t\tisText: true,\n\t\tmimeType: \"text/javascript\"\n\t} ],\n\t\n\t[ \"css\", {\n\t\tisText: true,\n\t\tmimeType: \"text/css\"\n\t} ],\n\t\n\t[ \"ico\", {\n\t\tmimeType: \"image/x-icon\"\n\t} ],\n\t\n\tprocess.env.NODE_ENV === \"development\" ? [ \"css.map\", {\n\t\tisText: true,\n\t\tmimeType: \"application/json\"\n\t} ] : null,\n\t\n\tprocess.env.NODE_ENV === \"development\" ? [ \"js.map\", {\n\t\tisText: true,\n\t\tmimeType: \"application/json\"\n\t} ] : null,\n\t\n\t[ \"jpg\", {\n\t\tmimeType: \"image/jpeg\"\n\t} ],\n\t\n\t[ \"jpeg\", {\n\t\tmimeType: \"image/jpeg\"\n\t} ]\n\t\n].filter(Boolean) as Extension[];\n", "export const defaultPreloaded = [\n\t...process.env.NODE_ENV === \"production\" ? [\n\t\t//#if _SSR\n\t\t// \"/index.css\",\n\t\t//#endif\n\t\t\"/index.js\",\n\t\t\"/favicon.ico\"\n\t] : []\n];\n", "export function noop() { /**/ }\n", "import { noop } from \"./noop.js\";\n\n\ntype Callback<Result> = (...args: unknown[]) => Result;\ntype FunctionOrBoolean = (() => unknown) | boolean;\ntype Options = { leading?: FunctionOrBoolean; maxWait?: number; trailing?: FunctionOrBoolean };\ntype NumberOrUndefined = number | undefined;\n\ntype DebouncedFunction<Result> = {\n\t(this: unknown, ..._args: unknown[]): Promise<Result>;\n};\n\nexport type Debounced<Result> = {\n\tcallback: Callback<Result>;\n\tpromise: {\n\t\tisResolved: boolean;\n\t} & Promise<unknown>;\n\tresolve: (value: Result) => void;\n\trun(): Promise<Result>;\n\tclear(shouldRun?: boolean): Promise<void>;\n} & DebouncedFunction<Result>;\n\n\nexport function debounce<Result>(callback: Callback<Result>, limit = 0, options: Options = {}) {\n\tlet { leading = false, trailing = true } = options;\n\tconst { maxWait = Infinity } = options;\n\t\n\tlet timeout: NumberOrUndefined;\n\tlet maxWaitTimeout: NumberOrUndefined;\n\tlet end: NumberOrUndefined;\n\tlet context: unknown;\n\tlet args: unknown[];\n\tlet initial: FunctionOrBoolean;\n\tlet final: FunctionOrBoolean;\n\tlet result: Result;\n\t\n\tconst expired = async () => {\n\t\t\n\t\tconst n = Date.now();\n\t\t\n\t\tif (n >= end!) {\n\t\t\ttimeout = undefined;\n\t\t\tend = undefined;\n\t\t\tclearTimeout(maxWaitTimeout);\n\t\t\tif (typeof final == \"function\")\n\t\t\t\tawait final();\n\t\t\tdebounced.resolve(result);\n\t\t\tdebounced.promise.isResolved = true;\n\t\t\tinitial = leading;\n\t\t} else {\n\t\t\tclearTimeout(timeout);\n\t\t\ttimeout = setTimeout(expired, end! - n);\n\t\t}\n\t\t\n\t};\n\t\n\tconst maxWaitExpired = Number.isFinite(maxWait) ? () => {\n\t\t\n\t\tif (final === run)\n\t\t\tfinal = false;\n\t\trun();\n\t\tmaxWaitTimeout = setTimeout(maxWaitExpired as TimerHandler, maxWait);\n\t\t\n\t} : null;\n\t\n\tasync function run() {\n\t\treturn (result = await callback.apply(context, args));\n\t}\n\t\n\tif (leading && typeof leading == \"boolean\")\n\t\tleading = run;\n\tinitial = leading;\n\t\n\tif (trailing && typeof trailing == \"boolean\")\n\t\ttrailing = run;\n\tfinal = trailing;\n\t\n\tconst debounced: Debounced<Result> = Object.assign(function (..._args) {\n\t\targs = _args;\n\t\tcontext = this;// eslint-disable-line no-invalid-this\n\t\t\n\t\tend = Date.now() + limit;\n\t\tfinal = trailing;\n\t\t\n\t\tif (debounced.promise.isResolved)\n\t\t\tdebounced.promise = Object.assign(new Promise(resolve => {\n\t\t\t\tdebounced.resolve = resolve;\n\t\t\t\t\n\t\t\t\tif (typeof initial == \"function\") {\n\t\t\t\t\tinitial();\n\t\t\t\t\tinitial = false;\n\t\t\t\t\tif (final === run)\n\t\t\t\t\t\tfinal = false;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (!timeout) {\n\t\t\t\t\ttimeout = setTimeout(expired, limit);\n\t\t\t\t\tif (maxWaitExpired)\n\t\t\t\t\t\tmaxWaitTimeout = setTimeout(maxWaitExpired, maxWait);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}), {\n\t\t\t\tisResolved: false\n\t\t\t});\n\t\t\n\t\treturn debounced.promise;\n\t} as DebouncedFunction<Result>, {\n\t\tcallback,\n\t\tpromise: Object.assign(Promise.resolve(), {\n\t\t\tisResolved: true\n\t\t}),\n\t\tresolve: noop,\n\t\trun,\n\t\tclear: async (shouldRun?: boolean) => {\n\t\t\t\n\t\t\tclearTimeout(timeout);\n\t\t\ttimeout = undefined;\n\t\t\t\n\t\t\tclearTimeout(maxWaitTimeout);\n\t\t\t\n\t\t\tdebounced.promise.isResolved = true;\n\t\t\tdebounced.resolve(shouldRun ? await run() : result);\n\t\t\t\n\t\t}\n\t});\n\t\n\treturn debounced;\n}\n\n\ndebounce.noop = Object.assign(() => { /**/ }, {\n\tcallback: noop,\n\tpromise: Object.assign(Promise.resolve(), {\n\t\tisResolved: true\n\t}),\n\tresolve: noop,\n\trun: noop,\n\tclear: noop\n}) as unknown as Debounced<void>;\n\n\nexport function throttle<Result>(callback: Callback<Result>, limit?: number, options?: Options) {\n\treturn debounce(callback, limit, {\n\t\tmaxWait: limit,\n\t\tleading: true,\n\t\ttrailing: true,\n\t\t...options\n\t});\n}\n", "export function isEmpty(object: object) {\n\tfor (const _ in object)// eslint-disable-line guard-for-in, no-unreachable-loop\n\t\treturn false;\n\t\n\treturn true;\n}\n", "export function howmuch(number: [] | number, one: string, two: string, five: boolean | string, shouldPrintNumber = true) {\n\tif (Array.isArray(number))\n\t\tnumber = number.length;\n\t\n\tif (typeof five != \"string\") {\n\t\tshouldPrintNumber = five ?? true;\n\t\tfive = two;\n\t}\n\t\n\t\n\treturn (shouldPrintNumber ? `${number}\u00A0` : \"\") + howmuch.raw(number, one, two, five);\n}\n\nhowmuch.raw = (number: number, one: string, two: string, five = two) => {\n\tnumber = Math.abs(number);\n\tconst u = number % 10;\n\tconst d = number % 100;\n\t\n\treturn (\n\t\t(u === 1 && d !== 11) ?\n\t\t\tone :\n\t\t\t((u >= 2 && u <= 4) && !(d >= 12 && d <= 15)) ?\n\t\t\t\ttwo :\n\t\t\t\tfive\n\t);\n};\n", "import { isEmpty } from \"@nesvet/n\";\nimport { handleRequestCompressed } from \"../compression\";\nimport { ClassMiddleware } from \"../Middleware\";\nimport type { Request } from \"../Request\";\nimport type { Response } from \"../Response\";\n\n\nconst { INSITE_TITLE } = process.env;\n\nconst envGlobals: Record<string, unknown> = {};\nfor (const key in process.env)\n\tif (key.startsWith(\"INSITE_CLIENT_\"))\n\t\tenvGlobals[key.replace(/INSITE_CLIENT_/, \"\").toLowerCase()] = process.env[key];\n\nconst headers = { \"Content-Type\": \"text/html; charset=utf-8\" };\n\n\ntype Options = {\n\trequestRegExp?: RegExp;\n\tglobals?: Record<string, unknown>;\n\ttitle?: string;\n\tcss?: string[] | string;\n\trootId?: string;\n};\n\nexport type { Options as TemplateMiddlewareOptions };\n\n\nexport class TemplateMiddleware extends ClassMiddleware {\n\tconstructor({\n\t\trequestRegExp = /.*/,\n\t\tglobals = {},\n\t\ttitle = INSITE_TITLE ?? \"inSite\",\n\t\tcss = [],\n\t\trootId = \"root\"\n\t}: Options = {}) {\n\t\tsuper();\n\t\t\n\t\tthis.listeners = { GET: [\n\t\t\t[ requestRegExp, this.#handler ]\n\t\t] };\n\t\t\n\t\tthis.#title = title;\n\t\tthis.#css = Array.isArray(css) ? css : [ css ];\n\t\tthis.#rootId = rootId;\n\t\t\n\t\tObject.assign(globals, envGlobals);\n\t\t\n\t\tthis.#html =\n\t\t\t\"<!DOCTYPE html>\" +\n\t\t\t\"<html lang=\\\"ru\\\">\" +\n\t\t\t\"<head>\" +\n\t\t\t\"<meta charset=\\\"utf-8\\\" />\" +\n\t\t\t\"<meta name=\\\"viewport\\\" content=\\\"minimum-scale=1, initial-scale=1, width=device-width\\\" />\" +\n\t\t\t`<title>${this.#title}</title>` +\n\t\t\t`${this.#css.map(fileName => `<link rel=\"stylesheet\" href=\"${fileName}\" />`).join(\"\")}` +\n\t\t\t`${isEmpty(globals) ? \"\" : `<script>globalThis.__insite=${JSON.stringify(globals)};</script>`}` +\n\t\t\t\"<script type=\\\"text/javascript\\\" src=\\\"/index.js\\\" defer></script>\" +\n\t\t\t\"</head>\" +\n\t\t\t\"<body>\" +\n\t\t\t`<div id=\"${this.#rootId}\">` +\n\t\t\t\"</div>\" +\n\t\t\t\"</body>\" +\n\t\t\t\"</html>\";\n\t\t\n\t}\n\t\n\t#title;\n\t#css;\n\t#rootId;\n\t#html;\n\t\n\t#handler = (request: Request, response: Response) =>\n\t\thandleRequestCompressed(request, response, headers, this.#html);\n\t\n}\n", "import type http from \"node:http\";\nimport type https from \"node:https\";\nimport { createServer, resolveSSL, showServerListeningMessage } from \"insite-common/backend\";\nimport { ClassMiddleware } from \"./Middleware\";\nimport { matches, Request } from \"./Request\";\nimport { Response } from \"./Response\";\nimport { requestSymbol, serverSymbol } from \"./symbols\";\nimport {\n\tisMethod,\n\tisRequestMethodAccepted,\n\tisServerServer,\n\tisTupleMiddleware,\n\tisTupleMiddlewareOrArray,\n\tMiddleware,\n\ttype ErrorParams,\n\ttype GenericMiddleware,\n\ttype Handler,\n\ttype Listener,\n\ttype Method,\n\ttype Options,\n\ttype RegExpOrString\n} from \"./types\";\nimport { pathToRegExp } from \"./utils\";\n\n\nexport class HTTPServer {\n\tconstructor({\n\t\tport,\n\t\tssl,\n\t\tlisteners,\n\t\terrors,\n\t\tserver\n\t}: Options, middlewares: (GenericMiddleware | false | null | undefined)[] = []) {\n\t\t\n\t\tif (isServerServer(server)) {\n\t\t\tthis.server = server;\n\t\t\t\n\t\t\tnew Promise<void>(resolve => void (\n\t\t\t\tserver.listening ?\n\t\t\t\t\tresolve() :\n\t\t\t\t\tserver.on(\"listening\", resolve)\n\t\t\t)).then(() => showServerListeningMessage(this));\n\t\t\t\n\t\t} else {\n\t\t\tthis.server = createServer(HTTPServer.makeProps({ ssl, server }));\n\t\t\t\n\t\t\tthis.server.listen(\n\t\t\t\ttypeof port == \"string\" ?\n\t\t\t\t\tNumber.parseInt(port) :\n\t\t\t\t\tport ?? (this.isS ? 443 : 80),\n\t\t\t\t() => showServerListeningMessage(this)\n\t\t\t);\n\t\t}\n\t\t\n\t\tif (listeners)\n\t\t\tfor (const [ method, methodListeners ] of Object.entries(listeners) as [ Method | \"ALL\", Listener[] ][])\n\t\t\t\tfor (const [ regExp, handler ] of methodListeners)\n\t\t\t\t\tthis.addRequestListener(method, regExp, handler);\n\t\t\n\t\tif (errors)\n\t\t\tfor (const statusCodeString of Object.keys(errors)) {\n\t\t\t\tconst statusCode = Number.parseInt(statusCodeString);\n\t\t\t\tif (statusCode)\n\t\t\t\t\tif (this.#errors[statusCode])\n\t\t\t\t\t\tObject.assign(this.#errors[statusCode], errors[statusCode]);\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.#errors[statusCode] = errors[statusCode];\n\t\t\t}\n\t\t\n\t\tif (middlewares)\n\t\t\tfor (const middleware of middlewares)\n\t\t\t\tif (middleware)\n\t\t\t\t\tthis.addMiddleware(middleware);\n\t\t\n\t\tthis.server.on(\"request\", this.#requestListener);\n\t\t\n\t}\n\t\n\t/** Server icon */\n\ticon = \"\uD83D\uDD78\uFE0F \";\n\t\n\t/** Server name */\n\tname = \"HTTP\";\n\tget protocol() {\n\t\treturn `http${this.isS ? \"s\" : \"\"}`;\n\t}\n\t\n\t/** Node.js http(s) server object */\n\tserver;\n\t\n\t/** Does the server use SSL */\n\tget isS() {\n\t\treturn \"setSecureContext\" in this.server;\n\t}\n\t\n\t#listeners: Record<Method, Listener[]> = {\n\t\tPOST: [],\n\t\tGET: [],\n\t\tPUT: [],\n\t\tPATCH: [],\n\t\tDELETE: []\n\t};\n\t\n\t#requestListener = async (request: Request, response: Response) => {\n\t\tresponse[serverSymbol] = this;\n\t\tresponse[requestSymbol] = request;\n\t\t\n\t\tif (!(\"status\" in request) && isRequestMethodAccepted(request.method, this.#listeners))\n\t\t\tfor (const [ regExp, handler ] of this.#listeners[request.method])\n\t\t\t\tif (matches(request, regExp) && await handler(request, response) !== false)\n\t\t\t\t\treturn;\n\t\t\n\t\tresponse.notFound();\n\t\t\n\t};\n\t\n\t#errors: Record<\"default\" | number, ErrorParams> = {\n\t\t400: {\n\t\t\tcontent: \"Bad Request\"\n\t\t},\n\t\t401: {\n\t\t\tcontent: \"Unauthorized\"\n\t\t},\n\t\t403: {\n\t\t\tcontent: \"Forbidden\"\n\t\t},\n\t\t404: {\n\t\t\tcontent: \"Not Found\"\n\t\t},\n\t\t408: {\n\t\t\tcontent: \"Request Timeout\"\n\t\t},\n\t\t410: {\n\t\t\tcontent: \"Gone\"\n\t\t},\n\t\t500: {\n\t\t\tcontent: \"Internal Server Error\"\n\t\t},\n\t\t503: {\n\t\t\tcontent: \"Service Unavailable\"\n\t\t},\n\t\tdefault: {\n\t\t\theaders: { \"Content-Type\": \"text/plain; charset=utf-8\" },\n\t\t\tcontent: \"\",\n\t\t\thandler(request, response, { statusCode, headers, content }) {\n\t\t\t\treturn response.writeHead(statusCode, headers).end(content);\n\t\t\t}\n\t\t}\n\t};\n\t\n\t_throw(response: Response, statusCode: number, params?: ErrorParams | string) {\n\t\tif (typeof params == \"string\")\n\t\t\tparams = { content: params };\n\t\t\n\t\tconst {\n\t\t\thandler,\n\t\t\t...restParams\n\t\t} = {\n\t\t\t...this.#errors.default,\n\t\t\t...this.#errors[statusCode],\n\t\t\t...params\n\t\t};\n\t\t\n\t\treturn handler ? handler(response[requestSymbol], response, {\n\t\t\t...restParams,\n\t\t\tstatusCode\n\t\t}) : response;\n\t}\n\t\n\t/** Add request listener */\n\taddRequestListener(method: Method | \"ALL\", regExp: RegExpOrString, handler: Handler) {\n\t\tif (typeof regExp == \"string\")\n\t\t\tregExp = pathToRegExp(regExp);\n\t\t\n\t\tif (method && method !== \"ALL\")\n\t\t\tthis.#listeners[method]?.push([ regExp, handler ]);\n\t\telse\n\t\t\tfor (const specificMethod of Object.keys(this.#listeners) as Method[])\n\t\t\t\tthis.addRequestListener(specificMethod, regExp, handler);\n\t\t\n\t\treturn this;\n\t}\n\t\n\t/** Add middleware */\n\taddMiddleware(middleware: GenericMiddleware) {\n\t\tif (middleware instanceof ClassMiddleware) {\n\t\t\tfor (const [ method, regExpOrStringArrayMap ] of Object.entries(middleware.listeners))\n\t\t\t\tfor (const [ regExpOrString, handler ] of regExpOrStringArrayMap)\n\t\t\t\t\tthis.addRequestListener(method as Method, regExpOrString, handler);\n\t\t\tmiddleware.bindTo?.(this);\n\t\t} else if (isTupleMiddlewareOrArray(middleware)) {\n\t\t\tif (isTupleMiddleware(middleware))\n\t\t\t\tmiddleware = [ middleware ];\n\t\t\t\n\t\t\tfor (const params of middleware)\n\t\t\t\tthis.addRequestListener(...params.length === 2 ? [ \"GET\", ...params ] as const : params);\n\t\t} else\n\t\t\tthis.#parseMappedMiddleware(middleware);\n\t\t\n\t\treturn this;\n\t}\n\t\n\t#parseMappedMiddleware(middleware: Middleware, method: Method | \"ALL\" = \"GET\", prefix: string = \"\") {\n\t\tfor (const [ key, value ] of Object.entries(middleware))\n\t\t\tif (typeof value == \"function\")\n\t\t\t\tthis.addRequestListener(method, `${prefix}${key}`, value);\n\t\t\telse if (isMethod(key))\n\t\t\t\tthis.#parseMappedMiddleware(value, key, prefix);\n\t\t\telse\n\t\t\t\tthis.#parseMappedMiddleware(value, method, `${prefix}${key}`);\n\t\t\n\t}\n\t\n\t/** Add POST request listener */\n\tpost(regExp: RegExpOrString, handler: Handler) {\n\t\tthis.addRequestListener(\"POST\", regExp, handler);\n\t\t\n\t\treturn this;\n\t}\n\t\n\t/** Add GET request listener */\n\tget(regExp: RegExpOrString, handler: Handler) {\n\t\tthis.addRequestListener(\"GET\", regExp, handler);\n\t\t\n\t\treturn this;\n\t}\n\t\n\t/** Add PUT request listener */\n\tput(regExp: RegExpOrString, handler: Handler) {\n\t\tthis.addRequestListener(\"PUT\", regExp, handler);\n\t\t\n\t\treturn this;\n\t}\n\t\n\t/** Add PATCH request listener */\n\tpatch(regExp: RegExpOrString, handler: Handler) {\n\t\tthis.addRequestListener(\"PATCH\", regExp, handler);\n\t\t\n\t\treturn this;\n\t}\n\t\n\t/** Add DELETE request listener */\n\tdelete(regExp: RegExpOrString, handler: Handler) {\n\t\tthis.addRequestListener(\"DELETE\", regExp, handler);\n\t\t\n\t\treturn this;\n\t}\n\t\n\t\n\t/** Make props for Node.js http(s).createServer method */\n\tstatic makeProps({ ssl, server }: Options) {\n\t\treturn {\n\t\t\t...resolveSSL(ssl),\n\t\t\tIncomingMessage: Request,\n\t\t\tServerResponse: Response,\n\t\t\t...server\n\t\t} as http.ServerOptions | https.ServerOptions;\n\t}\n\t\n}\n", "import { IncomingMessage } from \"node:http\";\nimport querystring from \"node:querystring\";\nimport { matchSymbol } from \"./symbols\";\nimport { extractQueryParams, extractUrlParams } from \"./utils\";\nimport type { RequestParams, RequestQueryParams } from \"./types\";\n\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n\nexport function matches(request: Request, regExp: RegExp) {\n\tconst match = regExp.exec(request.path);\n\t\n\tif (match) {\n\t\trequest[matchSymbol] = match;\n\t\t\n\t\treturn true;\n\t}\n\t\n\treturn false;\n}\n\n\nexport class RequestBody {\n\tconstructor(request: Request<any>) {\n\t\tthis.#request = request;\n\t\t\n\t}\n\t\n\t#request;\n\t\n\t/** Request body as a ReadableStream */\n\tstream() {\n\t\treturn this.#request;\n\t}\n\t\n\t#text?: string;\n\t\n\t/** Request body as a string */\n\ttext() {\n\t\treturn new Promise<string>((resolve, reject) => {\n\t\t\t\n\t\t\tif (this.#text)\n\t\t\t\tresolve(this.#text);\n\t\t\telse {\n\t\t\t\tlet text = \"\";\n\t\t\t\t\n\t\t\t\tthis.#request.on(\"data\", chunk => { text += chunk; });\n\t\t\t\tthis.#request.on(\"end\", () => { resolve(this.#text = text); });\n\t\t\t\t\n\t\t\t\tthis.#request.on(\"error\", reject);\n\t\t\t}\n\t\t\t\n\t\t});\n\t}\n\t\n\t/** Request body as an Uint8Array */\n\tasync bytes() {\n\t\treturn new TextEncoder().encode(await this.text());\n\t}\n\t\n\t/** Request body as an ArrayBuffer */\n\tasync arrayBuffer() {\n\t\treturn (await this.bytes()).buffer;\n\t}\n\t\n\t/** Request body as a parsed JSON object */\n\tasync json() {\n\t\treturn JSON.parse(await this.text());\n\t}\n\t\n\t/** Request body as a parsed URL-encoded object */\n\tasync urlEncoded() {\n\t\treturn querystring.parse(await this.text());\n\t}\n\t\n\t// TODO:\n\t/** Request body as a parsed MessagePack object */\n\t// messagePack() {\n\t// }\n\t\n}\n\n\ndeclare module \"node:http\" {\n\tinterface IncomingMessage { // eslint-disable-line no-shadow\n\t\t_addHeaderLine(field: string, value: string, first: boolean): void;\n\t}\n}\n\nexport class Request<P = RequestParams> extends IncomingMessage {\n\t\n\tdeclare url: string;\n\t\n\t/** Pathname part of the URL string */\n\tpath!: string;\n\t\n\t/** Query string part of the URL string */\n\tquerystring!: string;\n\t\n\t_addHeaderLine(field: string, value: string, first: boolean): void {\n\t\tsuper._addHeaderLine(field, value, first);\n\t\t\n\t\tif (!this.path)\n\t\t\t([ this.path, this.querystring ] = this.url.split(\"?\", 2));\n\t\t\n\t}\n\t\n\t[matchSymbol]?: RegExpExecArray;\n\t\n\t#params?: P;\n\t\n\t/** Params parsed from the URL string */\n\tget params() {\n\t\treturn (this.#params ??= extractUrlParams(this) as P);\n\t}\n\t\n\t#query?: RequestQueryParams;\n\t\n\t/** Params parsed from the query string part of the URL string */\n\tget query() {\n\t\treturn (this.#query ??= extractQueryParams(this));\n\t}\n\t\n\t#body?: RequestBody;\n\t\n\t/** Object with async methods to get the request body */\n\tget body() {\n\t\treturn (this.#body ??= new RequestBody(this));\n\t}\n\t\n}\n", "export const serverSymbol = Symbol(\"server\");\nexport const requestSymbol = Symbol(\"request\");\nexport const matchSymbol = Symbol(\"match\");\n", "import { matchSymbol } from \"./symbols\";\nimport type { Request } from \"./Request\";\nimport type { RequestParams, RequestQueryParams } from \"./types\";\n\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n\nconst pathRegExp = /\\/(?:(\\*)|:([^/?]+)(\\?(.*))?)/g;\n\nfunction subPathToRegExpSource(path: string, index = 0): string {\n\treturn path.replaceAll(pathRegExp, (_, wildcard, param, optional, subPath) => {\n\t\tif (wildcard)\n\t\t\treturn `/(?<__${index++}>.*?)`;\n\t\t\n\t\tconst group = `/(?<${param}>[^/]+)`;\n\t\t\n\t\treturn optional ?\n\t\t\t`(?:${group}${subPath ? subPathToRegExpSource(subPath, index) : \"\"})?` :\n\t\t\tgroup;\n\t});\n}\n\nexport function pathToRegExp(path: string) {\n\treturn new RegExp(`^${subPathToRegExpSource(path)}/?$`);\n}\n\n\nconst wildcardKeyRegExp = /^__/;\n\nexport function extractUrlParams(request: Request<any>): RequestParams {\n\tif (request[matchSymbol]) {\n\t\tconst match = request[matchSymbol];\n\t\tdelete request[matchSymbol];\n\t\t\n\t\tconst params = [ undefined, ...match.slice(1) ] as RequestParams;\n\t\t\n\t\tif (match.groups)\n\t\t\tfor (const [ key, value ] of Object.entries(match.groups))\n\t\t\t\tparams[key.replace(wildcardKeyRegExp, \"\")] = value;\n\t\t\n\t\treturn params;\n\t}\n\t\n\treturn [] as unknown as RequestParams;\n}\n\n\nexport function extractQueryParams(request: Request<any>): RequestQueryParams {\n\treturn request.querystring?.split(\"&\").reduce((queryParams, pair) => {\n\t\tconst [ key, value ] = pair.split(\"=\");\n\t\t\n\t\tqueryParams[key] = decodeURIComponent(value || \"\");\n\t\t\n\t\treturn queryParams;\n\t}, {} as RequestQueryParams) ?? {};\n}\n", "import { OutgoingHttpHeader, OutgoingHttpHeaders, ServerResponse } from \"node:http\";\nimport { Readable } from \"node:stream\";\nimport { requestSymbol, serverSymbol } from \"./symbols\";\nimport type { Request } from \"./Request\";\nimport type { HTTPServer } from \"./Server\";\nimport type { ErrorParams } from \"./types\";\n\n\nexport class Response extends ServerResponse<Request> {\n\t\n\t[serverSymbol]!: HTTPServer;\n\t[requestSymbol]!: Request;\n\t\n\t/** End response with a plain text */\n\ttext(body: string) {\n\t\treturn this.writeHead(200, {\n\t\t\t\"Content-Type\": \"text/plain; charset=utf-8\",\n\t\t\t\"Content-Length\": Buffer.byteLength(body)\n\t\t}).end(body);\n\t}\n\t\n\t/** End response with a JSON string */\n\tjson(value: Parameters<JSON[\"stringify\"]>[0]) {\n\t\tconst body = JSON.stringify(value);\n\t\t\n\t\treturn this.writeHead(200, {\n\t\t\t\"Content-Type\": \"application/json; charset=utf-8\",\n\t\t\t\"Content-Length\": Buffer.byteLength(body)\n\t\t}).end(body);\n\t}\n\t\n\t/** End response with an URL-encoded string */\n\turlEncoded(params: ConstructorParameters<typeof URLSearchParams>[0]) {\n\t\tconst body = new URLSearchParams(params).toString();\n\t\t\n\t\treturn this.writeHead(200, {\n\t\t\t\"Content-Type\": \"application/x-www-form-urlencoded; charset=utf-8\",\n\t\t\t\"Content-Length\": Buffer.byteLength(body)\n\t\t}).end(body);\n\t}\n\t\n\t/** End response with a stream */\n\tstream(stream: Readable, headers?: OutgoingHttpHeader[] | OutgoingHttpHeaders) {\n\t\tthis.writeHead(200, headers);\n\t\t\n\t\treturn stream.pipe(this);\n\t}\n\t\n\t// TODO:\n\t// messagePack() {\n\t// }\n\t\n\t/** End response with an error */\n\terror(statusCode: number, params?: ErrorParams | string) {\n\t\treturn this[serverSymbol]._throw(this, statusCode, params);\n\t}\n\t\n\t/** End response with the 400 Bad Request */\n\tbadRequest(params?: ErrorParams | string) {\n\t\treturn this.error(400, params);\n\t}\n\t\n\t/** End response with the 401 Unauthorized */\n\tunauthorized(params?: ErrorParams | string) {\n\t\treturn this.error(401, params);\n\t}\n\t\n\t/** End response with the 403 Forbidden */\n\tforbidden(params?: ErrorParams | string) {\n\t\treturn this.error(403, params);\n\t}\n\t\n\t/** End response with the 404 Not Found */\n\tnotFound(params?: ErrorParams | string) {\n\t\treturn this.error(404, params);\n\t}\n\t\n\t/** End response with the 408 Request Timeout */\n\trequestTimeout(params?: ErrorParams | string) {\n\t\treturn this.error(408, params);\n\t}\n\t\n\t/** End response with the 410 Gone */\n\tgone(params?: ErrorParams | string) {\n\t\treturn this.error(410, params);\n\t}\n\t\n\t/** End response with the 500 Internal Server Error */\n\tinternalServerError(params?: ErrorParams | string) {\n\t\treturn this.error(500, params);\n\t}\n\t\n\t/** End response with the 503 Service Unavailable */\n\tserviceUnavailable(params?: ErrorParams | string) {\n\t\treturn this.error(503, params);\n\t}\n\t\n}\n", "import type http from \"node:http\";\nimport type https from \"node:https\";\nimport type { ClassMiddleware } from \"./Middleware\";\nimport type { Request } from \"./Request\";\nimport type { Response } from \"./Response\";\n\n\nconst METHODS = [ \"DELETE\", \"GET\", \"PATCH\", \"POST\", \"PUT\" ] as const;\n\n\nexport type ErrorParams = {\n\theaders?: http.OutgoingHttpHeader[] | http.OutgoingHttpHeaders;\n\tcontent: string;\n\thandler?(request: Request, response: Response, errorParams: Omit<ErrorParams, \"handler\"> & { statusCode: number }): Response;\n};\n\nexport type Method = typeof METHODS[number];\n\nexport function isMethod(string: string): string is Method | \"ALL\" {\n\treturn METHODS.includes(string as Method) || string === \"ALL\";\n}\n\nexport type Handler = (request: Request, response: Response) => unknown;\n\nexport type Listener = [ RegExp, Handler ];\n\nexport type Options = {\n\tssl?: {\n\t\tcert: Buffer | string;\n\t\tkey: Buffer | string;\n\t};\n\tport?: number | string;\n\thttps?: boolean;\n\tlisteners?: Partial<Record<Method | \"ALL\", Listener[]>>;\n\terrors?: Record<\"default\" | number, ErrorParams>;\n\tserver?: http.Server | http.ServerOptions | https.Server | https.ServerOptions;\n};\n\nexport type RegExpOrString = RegExp | string;\n\nexport type RequestParams = Record<string, string> & [ undefined, ...string[] ];\n\nexport type RequestQueryParams = Record<string, string>;\n\nexport type Middleware = {\n\t[K: string]: Handler | Middleware;\n} | {\n\t[K: {} & string]: Handler | Middleware;\n} | {\n\t[K in Method | \"ALL\"]?: Middleware;\n};\n\nexport type TupleMiddleware = readonly [ Method, RegExpOrString, Handler ] | readonly [ RegExpOrString, Handler ];\n\nexport type GenericMiddleware =\n\tClassMiddleware |\n\tMiddleware |\n\tTupleMiddleware |\n\tTupleMiddleware[];\n\nexport function isTupleMiddlewareOrArray(middleware: GenericMiddleware): middleware is TupleMiddleware | TupleMiddleware[] {\n\treturn Array.isArray(middleware);\n}\n\nexport function isTupleMiddleware(middleware: TupleMiddleware | TupleMiddleware[]): middleware is TupleMiddleware {\n\treturn !Array.isArray(middleware);\n}\n\nexport function isRequestMethodAccepted(requestMethod: string | undefined, listeners: Record<string, unknown>): requestMethod is Method {\n\treturn Boolean(requestMethod && listeners[requestMethod]);\n}\n\nexport function isServerServer(serverOrOptions: Options[\"server\"]): serverOrOptions is http.Server | https.Server {\n\treturn !!serverOrOptions && \"emit\" in serverOrOptions;\n}\n", "import { StaticMiddleware, StaticMiddlewareOptions } from \"./middlewares/Static\";\nimport { HTTPServer } from \"./Server\";\nimport { GenericMiddleware, Options } from \"./types\";\n\n\nexport class StaticServer extends HTTPServer {\n\tconstructor(options: StaticMiddlewareOptions, serverOptions: Options, middlewares: GenericMiddleware[] = []) {\n\t\tsuper(serverOptions, [\n\t\t\tnew StaticMiddleware(options),\n\t\t\t...middlewares\n\t\t]);\n\t\t\n\t}\n\t\n\tname = \"Static\";\n\ticon = \"\uD83D\uDED2\";\n\t\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["ClassMiddleware", "InitialsMiddleware", "fs", "path", "zlib", "brotliPreloadOptions", "brotliRuntimeOptions", "gzipPreloadOptions", "gzipRuntimeOptions", "brotliPreloadSync", "data", "gzipPreloadSync", "getCompressionStreamByEncoding", "contentEncoding", "handleRequestCompressed", "request", "response", "headers", "isBrotliAccepted", "defaultExtensions", "defaultPreloaded", "nullExtension", "StaticMiddleware", "ClassMiddleware", "src", "urlPrefix", "requestRegExp", "extensions", "defaultExtensions", "resolved", "restricted", "preloaded", "path", "entryPoint", "fs", "#src", "#urlPrefix", "#urlPrefixRegExp", "extension", "#addExtension", "resolvee", "#resolve", "fileName", "#restrict", "defaultPreloaded", "#preload", "#handler", "#extensions", "#resolved", "#restricted", "#preloaded", "#getExtensionBy", "name", "url", "isText", "fileData", "brotliPreloadSync", "gzipPreloadSync", "error", "request", "response", "mimeType", "contentEncoding", "resolve", "stream", "getCompressionStreamByEncoding", "noop", "debounce", "callback", "limit", "options", "leading", "trailing", "maxWait", "timeout", "maxWaitTimeout", "end", "context", "args", "initial", "final", "result", "expired", "n", "debounced", "maxWaitExpired", "run", "_args", "resolve", "noop", "shouldRun", "isEmpty", "object", "_", "howmuch", "number", "one", "two", "five", "shouldPrintNumber", "u", "d", "INSITE_TITLE", "envGlobals", "key", "headers", "TemplateMiddleware", "ClassMiddleware", "requestRegExp", "globals", "title", "css", "rootId", "#handler", "#title", "#css", "#rootId", "#html", "fileName", "isEmpty", "request", "response", "handleRequestCompressed", "createServer", "resolveSSL", "showServerListeningMessage", "IncomingMessage", "querystring", "serverSymbol", "requestSymbol", "matchSymbol", "pathRegExp", "subPathToRegExpSource", "path", "index", "_", "wildcard", "param", "optional", "subPath", "group", "pathToRegExp", "wildcardKeyRegExp", "extractUrlParams", "request", "matchSymbol", "match", "params", "key", "value", "extractQueryParams", "queryParams", "pair", "matches", "request", "regExp", "match", "matchSymbol", "RequestBody", "#request", "#text", "resolve", "reject", "text", "chunk", "querystring", "Request", "IncomingMessage", "field", "value", "first", "#params", "extractUrlParams", "#query", "extractQueryParams", "#body", "ServerResponse", "Response", "ServerResponse", "serverSymbol", "requestSymbol", "body", "value", "params", "stream", "headers", "statusCode", "METHODS", "isMethod", "string", "isTupleMiddlewareOrArray", "middleware", "isTupleMiddleware", "isRequestMethodAccepted", "requestMethod", "listeners", "isServerServer", "serverOrOptions", "HTTPServer", "_HTTPServer", "port", "ssl", "listeners", "errors", "server", "middlewares", "isServerServer", "resolve", "showServerListeningMessage", "createServer", "method", "methodListeners", "regExp", "handler", "statusCodeString", "statusCode", "#errors", "middleware", "#requestListener", "#listeners", "request", "response", "serverSymbol", "requestSymbol", "isRequestMethodAccepted", "matches", "headers", "content", "params", "restParams", "pathToRegExp", "specificMethod", "ClassMiddleware", "regExpOrStringArrayMap", "regExpOrString", "isTupleMiddlewareOrArray", "isTupleMiddleware", "#parseMappedMiddleware", "prefix", "key", "value", "isMethod", "resolveSSL", "Request", "Response", "StaticServer", "HTTPServer", "options", "serverOptions", "middlewares", "StaticMiddleware"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const
|
|
1
|
+
export declare const InitialsMiddleware: undefined;
|
|
2
2
|
//# sourceMappingURL=Initials.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Initials.d.ts","sourceRoot":"","sources":["../../src/middlewares/Initials.ts"],"names":[],"mappings":"AAmCA,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"Initials.d.ts","sourceRoot":"","sources":["../../src/middlewares/Initials.ts"],"names":[],"mappings":"AAmCA,eAAO,MAAM,kBAAkB,WAAY,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Options } from "./types";
|
|
3
|
-
export declare class
|
|
1
|
+
import { ClassMiddleware } from "../../Middleware";
|
|
2
|
+
import type { Options } from "./types";
|
|
3
|
+
export declare class StaticMiddleware extends ClassMiddleware {
|
|
4
4
|
#private;
|
|
5
5
|
constructor({ src, urlPrefix, requestRegExp, extensions, resolved, restricted, preloaded }?: Options);
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Static.d.ts","sourceRoot":"","sources":["../../../src/middlewares/Static/Static.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Static.d.ts","sourceRoot":"","sources":["../../../src/middlewares/Static/Static.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAKnD,OAAO,KAAK,EAAa,OAAO,EAAE,MAAM,SAAS,CAAC;AAQlD,qBAAa,gBAAiB,SAAQ,eAAe;;gBACxC,EACX,GAAc,EACd,SAAc,EACd,aAAa,EACb,UAA8B,EAC9B,QAAQ,EACR,UAAU,EACV,SAAqB,EACrB,GAAE,OAAY;CA6Hf"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ClassMiddleware } from "../Middleware";
|
|
2
2
|
type Options = {
|
|
3
3
|
requestRegExp?: RegExp;
|
|
4
4
|
globals?: Record<string, unknown>;
|
|
5
5
|
title?: string;
|
|
6
|
-
css?: string | string
|
|
6
|
+
css?: string[] | string;
|
|
7
7
|
rootId?: string;
|
|
8
8
|
};
|
|
9
9
|
export type { Options as TemplateMiddlewareOptions };
|
|
10
|
-
export declare class
|
|
10
|
+
export declare class TemplateMiddleware extends ClassMiddleware {
|
|
11
11
|
#private;
|
|
12
12
|
constructor({ requestRegExp, globals, title, css, rootId }?: Options);
|
|
13
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Template.d.ts","sourceRoot":"","sources":["../../src/middlewares/Template.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Template.d.ts","sourceRoot":"","sources":["../../src/middlewares/Template.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAehD,KAAK,OAAO,GAAG;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,YAAY,EAAE,OAAO,IAAI,yBAAyB,EAAE,CAAC;AAGrD,qBAAa,kBAAmB,SAAQ,eAAe;;gBAC1C,EACX,aAAoB,EACpB,OAAY,EACZ,KAAgC,EAChC,GAAQ,EACR,MAAe,EACf,GAAE,OAAY;CAwCf"}
|
package/dist/symbols.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
export declare const
|
|
2
|
-
export declare const
|
|
1
|
+
export declare const serverSymbol: unique symbol;
|
|
2
|
+
export declare const requestSymbol: unique symbol;
|
|
3
|
+
export declare const matchSymbol: unique symbol;
|
|
3
4
|
//# sourceMappingURL=symbols.d.ts.map
|
package/dist/symbols.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"symbols.d.ts","sourceRoot":"","sources":["../src/symbols.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"symbols.d.ts","sourceRoot":"","sources":["../src/symbols.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,eAAmB,CAAC;AAC7C,eAAO,MAAM,aAAa,eAAoB,CAAC;AAC/C,eAAO,MAAM,WAAW,eAAkB,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
import type http from "node:http";
|
|
2
2
|
import type https from "node:https";
|
|
3
|
-
import type {
|
|
4
|
-
import type {
|
|
3
|
+
import type { ClassMiddleware } from "./Middleware";
|
|
4
|
+
import type { Request } from "./Request";
|
|
5
|
+
import type { Response } from "./Response";
|
|
6
|
+
declare const METHODS: readonly ["DELETE", "GET", "PATCH", "POST", "PUT"];
|
|
5
7
|
export type ErrorParams = {
|
|
6
8
|
headers?: http.OutgoingHttpHeader[] | http.OutgoingHttpHeaders;
|
|
7
9
|
content: string;
|
|
8
|
-
handler?(request:
|
|
10
|
+
handler?(request: Request, response: Response, errorParams: Omit<ErrorParams, "handler"> & {
|
|
9
11
|
statusCode: number;
|
|
10
|
-
}):
|
|
12
|
+
}): Response;
|
|
11
13
|
};
|
|
12
|
-
export type Method =
|
|
13
|
-
export
|
|
14
|
+
export type Method = typeof METHODS[number];
|
|
15
|
+
export declare function isMethod(string: string): string is Method | "ALL";
|
|
16
|
+
export type Handler = (request: Request, response: Response) => unknown;
|
|
14
17
|
export type Listener = [RegExp, Handler];
|
|
15
18
|
export type Options = {
|
|
16
19
|
ssl?: {
|
|
@@ -19,19 +22,24 @@ export type Options = {
|
|
|
19
22
|
};
|
|
20
23
|
port?: number | string;
|
|
21
24
|
https?: boolean;
|
|
22
|
-
listeners?: Partial<Record<"ALL"
|
|
25
|
+
listeners?: Partial<Record<Method | "ALL", Listener[]>>;
|
|
23
26
|
errors?: Record<"default" | number, ErrorParams>;
|
|
24
27
|
server?: http.Server | http.ServerOptions | https.Server | https.ServerOptions;
|
|
25
28
|
};
|
|
26
29
|
export type RegExpOrString = RegExp | string;
|
|
27
|
-
type
|
|
28
|
-
type
|
|
29
|
-
type
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
30
|
+
export type RequestParams = Record<string, string> & [undefined, ...string[]];
|
|
31
|
+
export type RequestQueryParams = Record<string, string>;
|
|
32
|
+
export type Middleware = {
|
|
33
|
+
[K: string]: Handler | Middleware;
|
|
34
|
+
} | {
|
|
35
|
+
[K: {} & string]: Handler | Middleware;
|
|
36
|
+
} | {
|
|
37
|
+
[K in Method | "ALL"]?: Middleware;
|
|
38
|
+
};
|
|
39
|
+
export type TupleMiddleware = readonly [Method, RegExpOrString, Handler] | readonly [RegExpOrString, Handler];
|
|
40
|
+
export type GenericMiddleware = ClassMiddleware | Middleware | TupleMiddleware | TupleMiddleware[];
|
|
41
|
+
export declare function isTupleMiddlewareOrArray(middleware: GenericMiddleware): middleware is TupleMiddleware | TupleMiddleware[];
|
|
42
|
+
export declare function isTupleMiddleware(middleware: TupleMiddleware | TupleMiddleware[]): middleware is TupleMiddleware;
|
|
35
43
|
export declare function isRequestMethodAccepted(requestMethod: string | undefined, listeners: Record<string, unknown>): requestMethod is Method;
|
|
36
44
|
export declare function isServerServer(serverOrOptions: Options["server"]): serverOrOptions is http.Server | https.Server;
|
|
37
45
|
export {};
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Request } from "./Request";
|
|
2
|
+
import type { RequestParams, RequestQueryParams } from "./types";
|
|
3
|
+
export declare function pathToRegExp(path: string): RegExp;
|
|
4
|
+
export declare function extractUrlParams(request: Request<any>): RequestParams;
|
|
5
|
+
export declare function extractQueryParams(request: Request<any>): RequestQueryParams;
|
|
6
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAqBjE,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,UAExC;AAKD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,aAAa,CAerE;AAGD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAQ5E"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "insite-http",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.1.1",
|
|
4
4
|
"description": "inSite HTTPS server",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -24,12 +24,13 @@
|
|
|
24
24
|
"author": "Eugene Nesvetaev <dev@nesvet.dev> (https://nesvet.dev/)",
|
|
25
25
|
"license": "MIT",
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@nesvet/n": "^1.1.
|
|
27
|
+
"@nesvet/n": "^1.1.22"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
|
-
"@nesvet/conveyer": "^2.2
|
|
31
|
-
"@nesvet/eslint-config": "^2.0.
|
|
30
|
+
"@nesvet/conveyer": "^2.4.2",
|
|
31
|
+
"@nesvet/eslint-config": "^2.0.47",
|
|
32
32
|
"@types/node": "^22.13.1",
|
|
33
|
+
"insite-common": "^2.1.1",
|
|
33
34
|
"typescript": "^5.7.3"
|
|
34
35
|
}
|
|
35
36
|
}
|