tezx 2.0.11 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) hide show
  1. package/README.md +122 -89
  2. package/bun/getConnInfo.d.ts +21 -0
  3. package/bun/getConnInfo.js +9 -0
  4. package/bun/index.d.ts +10 -4
  5. package/bun/index.js +8 -4
  6. package/bun/ws.d.ts +48 -0
  7. package/bun/ws.js +58 -0
  8. package/cjs/bun/getConnInfo.js +12 -0
  9. package/cjs/bun/index.js +35 -7
  10. package/cjs/bun/ws.js +63 -0
  11. package/cjs/core/config.js +2 -12
  12. package/cjs/core/context.js +131 -379
  13. package/cjs/core/error.js +49 -0
  14. package/cjs/core/request.js +79 -131
  15. package/cjs/core/router.js +54 -387
  16. package/cjs/core/server.js +83 -202
  17. package/cjs/deno/env.js +4 -4
  18. package/cjs/deno/getConnInfo.js +18 -0
  19. package/cjs/deno/index.js +11 -18
  20. package/cjs/deno/serveStatic.js +53 -0
  21. package/cjs/deno/ws.js +39 -0
  22. package/cjs/helper/index.js +46 -10
  23. package/cjs/index.js +5 -7
  24. package/cjs/jwt/node.js +94 -0
  25. package/cjs/jwt/web.js +178 -0
  26. package/cjs/middleware/basic-auth.js +42 -0
  27. package/cjs/middleware/bearer-auth.js +34 -0
  28. package/cjs/middleware/cache-control.js +44 -0
  29. package/cjs/middleware/cors.js +11 -21
  30. package/cjs/middleware/detect-bot.js +57 -0
  31. package/cjs/middleware/i18n.js +73 -60
  32. package/cjs/middleware/index.js +8 -46
  33. package/cjs/middleware/logger.js +9 -4
  34. package/cjs/middleware/pagination.js +3 -2
  35. package/cjs/middleware/powered-by.js +3 -2
  36. package/cjs/middleware/rate-limiter.js +38 -0
  37. package/cjs/middleware/request-id.js +4 -5
  38. package/cjs/middleware/sanitize-headers.js +22 -0
  39. package/cjs/middleware/secure-headers copy.js +143 -0
  40. package/cjs/middleware/secure-headers.js +157 -0
  41. package/cjs/middleware/{xssProtection.js → xss-protection.js} +5 -8
  42. package/cjs/node/env.js +7 -7
  43. package/cjs/node/getConnInfo.js +16 -0
  44. package/cjs/node/index.js +17 -18
  45. package/cjs/node/mount-node.js +59 -0
  46. package/cjs/node/serveStatic.js +56 -0
  47. package/cjs/node/toWebRequest.js +25 -0
  48. package/cjs/node/ws.js +82 -0
  49. package/cjs/registry/RadixRouter.js +148 -0
  50. package/cjs/registry/index.js +17 -0
  51. package/cjs/types/headers.js +2 -0
  52. package/cjs/types/index.js +13 -0
  53. package/cjs/utils/buffer.js +17 -0
  54. package/cjs/utils/colors.js +2 -0
  55. package/cjs/utils/cookie.js +59 -0
  56. package/cjs/utils/file.js +136 -0
  57. package/cjs/utils/formData.js +60 -10
  58. package/cjs/utils/generateID.js +37 -0
  59. package/cjs/utils/low-level.js +115 -0
  60. package/cjs/utils/{staticFile.js → mimeTypes.js} +0 -87
  61. package/cjs/utils/rateLimit.js +41 -0
  62. package/cjs/utils/response.js +65 -0
  63. package/cjs/{core/environment.js → utils/runtime.js} +2 -1
  64. package/cjs/utils/url.js +65 -30
  65. package/core/config.d.ts +2 -7
  66. package/core/config.js +2 -12
  67. package/core/context.d.ts +209 -164
  68. package/core/context.js +131 -346
  69. package/core/error.d.ts +96 -0
  70. package/core/error.js +44 -0
  71. package/core/request.d.ts +67 -107
  72. package/core/request.js +78 -130
  73. package/core/router.d.ts +138 -133
  74. package/core/router.js +53 -352
  75. package/core/server.d.ts +99 -38
  76. package/core/server.js +83 -202
  77. package/deno/env.js +3 -3
  78. package/deno/getConnInfo.d.ts +21 -0
  79. package/deno/getConnInfo.js +15 -0
  80. package/deno/index.d.ts +9 -4
  81. package/deno/index.js +7 -4
  82. package/deno/serveStatic.d.ts +28 -0
  83. package/deno/serveStatic.js +49 -0
  84. package/deno/ws.d.ts +42 -0
  85. package/deno/ws.js +36 -0
  86. package/helper/index.d.ts +29 -15
  87. package/helper/index.js +27 -7
  88. package/index.d.ts +10 -8
  89. package/index.js +4 -5
  90. package/jwt/node.d.ts +39 -0
  91. package/jwt/node.js +87 -0
  92. package/jwt/web.d.ts +14 -0
  93. package/jwt/web.js +174 -0
  94. package/middleware/basic-auth.d.ts +56 -0
  95. package/middleware/basic-auth.js +38 -0
  96. package/middleware/bearer-auth.d.ts +53 -0
  97. package/middleware/bearer-auth.js +30 -0
  98. package/middleware/cache-control.d.ts +30 -0
  99. package/middleware/cache-control.js +40 -0
  100. package/middleware/cors.d.ts +30 -3
  101. package/middleware/cors.js +12 -22
  102. package/middleware/detect-bot.d.ts +113 -0
  103. package/middleware/detect-bot.js +53 -0
  104. package/middleware/i18n.d.ts +166 -73
  105. package/middleware/i18n.js +73 -60
  106. package/middleware/index.d.ts +8 -32
  107. package/middleware/index.js +8 -44
  108. package/middleware/logger.d.ts +5 -2
  109. package/middleware/logger.js +9 -4
  110. package/middleware/pagination.d.ts +9 -6
  111. package/middleware/pagination.js +3 -2
  112. package/middleware/powered-by.d.ts +2 -1
  113. package/middleware/powered-by.js +3 -2
  114. package/middleware/{rateLimiter.d.ts → rate-limiter.d.ts} +15 -9
  115. package/middleware/rate-limiter.js +34 -0
  116. package/middleware/request-id.d.ts +2 -1
  117. package/middleware/request-id.js +5 -6
  118. package/middleware/{sanitizeHeader.d.ts → sanitize-headers.d.ts} +5 -19
  119. package/middleware/sanitize-headers.js +18 -0
  120. package/middleware/secure-headers copy.d.ts +15 -0
  121. package/middleware/secure-headers copy.js +136 -0
  122. package/middleware/secure-headers.d.ts +132 -0
  123. package/middleware/secure-headers.js +153 -0
  124. package/middleware/{xssProtection.d.ts → xss-protection.d.ts} +2 -1
  125. package/middleware/xss-protection.js +19 -0
  126. package/node/env.js +4 -4
  127. package/node/getConnInfo.d.ts +21 -0
  128. package/node/getConnInfo.js +13 -0
  129. package/node/index.d.ts +13 -4
  130. package/node/index.js +11 -4
  131. package/node/mount-node.d.ts +11 -0
  132. package/node/mount-node.js +56 -0
  133. package/node/serveStatic.d.ts +36 -0
  134. package/node/serveStatic.js +52 -0
  135. package/node/toWebRequest.js +22 -0
  136. package/node/ws.d.ts +56 -0
  137. package/node/ws.js +46 -0
  138. package/package.json +39 -30
  139. package/registry/RadixRouter.d.ts +40 -0
  140. package/registry/RadixRouter.js +144 -0
  141. package/registry/index.d.ts +2 -0
  142. package/registry/index.js +1 -0
  143. package/types/headers.d.ts +2 -0
  144. package/types/headers.js +1 -0
  145. package/types/index.d.ts +318 -18
  146. package/types/index.js +12 -1
  147. package/utils/buffer.d.ts +1 -0
  148. package/utils/buffer.js +14 -0
  149. package/utils/colors.d.ts +24 -0
  150. package/utils/colors.js +2 -0
  151. package/utils/cookie.d.ts +55 -0
  152. package/utils/cookie.js +53 -0
  153. package/utils/file.d.ts +38 -0
  154. package/utils/file.js +96 -0
  155. package/utils/formData.d.ts +41 -1
  156. package/utils/formData.js +58 -9
  157. package/utils/generateID.d.ts +42 -0
  158. package/utils/generateID.js +32 -0
  159. package/utils/httpStatusMap.d.ts +14 -0
  160. package/utils/low-level.d.ts +58 -0
  161. package/utils/low-level.js +108 -0
  162. package/utils/mimeTypes.d.ts +4 -0
  163. package/utils/{staticFile.js → mimeTypes.js} +0 -53
  164. package/utils/rateLimit.d.ts +18 -0
  165. package/utils/rateLimit.js +37 -0
  166. package/utils/response.d.ts +18 -0
  167. package/utils/response.js +58 -0
  168. package/{core/environment.d.ts → utils/runtime.d.ts} +1 -0
  169. package/{core/environment.js → utils/runtime.js} +1 -0
  170. package/utils/url.d.ts +42 -14
  171. package/utils/url.js +61 -27
  172. package/bun/adapter.d.ts +0 -127
  173. package/bun/adapter.js +0 -97
  174. package/cjs/bun/adapter.js +0 -100
  175. package/cjs/core/MiddlewareConfigure.js +0 -68
  176. package/cjs/core/common.js +0 -15
  177. package/cjs/deno/adpater.js +0 -67
  178. package/cjs/helper/common.js +0 -17
  179. package/cjs/middleware/basicAuth.js +0 -71
  180. package/cjs/middleware/cacheControl.js +0 -90
  181. package/cjs/middleware/detectBot.js +0 -104
  182. package/cjs/middleware/detectLocale.js +0 -43
  183. package/cjs/middleware/lazyLoadModules.js +0 -73
  184. package/cjs/middleware/rateLimiter.js +0 -24
  185. package/cjs/middleware/requestTimeout.js +0 -42
  186. package/cjs/middleware/sanitizeHeader.js +0 -51
  187. package/cjs/middleware/secureHeaders.js +0 -42
  188. package/cjs/node/adapter.js +0 -138
  189. package/cjs/utils/regexRouter.js +0 -58
  190. package/cjs/utils/state.js +0 -34
  191. package/cjs/utils/toWebRequest.js +0 -35
  192. package/cjs/ws/deno.js +0 -20
  193. package/cjs/ws/index.js +0 -53
  194. package/cjs/ws/node.js +0 -65
  195. package/core/MiddlewareConfigure.d.ts +0 -15
  196. package/core/MiddlewareConfigure.js +0 -63
  197. package/core/common.d.ts +0 -21
  198. package/core/common.js +0 -11
  199. package/deno/adpater.d.ts +0 -38
  200. package/deno/adpater.js +0 -64
  201. package/helper/common.d.ts +0 -5
  202. package/helper/common.js +0 -14
  203. package/middleware/basicAuth.d.ts +0 -81
  204. package/middleware/basicAuth.js +0 -67
  205. package/middleware/cacheControl.d.ts +0 -48
  206. package/middleware/cacheControl.js +0 -53
  207. package/middleware/detectBot.d.ts +0 -121
  208. package/middleware/detectBot.js +0 -98
  209. package/middleware/detectLocale.d.ts +0 -55
  210. package/middleware/detectLocale.js +0 -39
  211. package/middleware/lazyLoadModules.d.ts +0 -72
  212. package/middleware/lazyLoadModules.js +0 -69
  213. package/middleware/rateLimiter.js +0 -20
  214. package/middleware/requestTimeout.d.ts +0 -25
  215. package/middleware/requestTimeout.js +0 -38
  216. package/middleware/sanitizeHeader.js +0 -47
  217. package/middleware/secureHeaders.d.ts +0 -78
  218. package/middleware/secureHeaders.js +0 -38
  219. package/middleware/xssProtection.js +0 -22
  220. package/node/adapter.d.ts +0 -46
  221. package/node/adapter.js +0 -102
  222. package/utils/regexRouter.d.ts +0 -66
  223. package/utils/regexRouter.js +0 -53
  224. package/utils/state.d.ts +0 -50
  225. package/utils/state.js +0 -30
  226. package/utils/staticFile.d.ts +0 -10
  227. package/utils/toWebRequest.js +0 -32
  228. package/ws/deno.d.ts +0 -6
  229. package/ws/deno.js +0 -16
  230. package/ws/index.d.ts +0 -180
  231. package/ws/index.js +0 -50
  232. package/ws/node.d.ts +0 -7
  233. package/ws/node.js +0 -28
  234. /package/{utils → node}/toWebRequest.d.ts +0 -0
package/utils/state.js DELETED
@@ -1,30 +0,0 @@
1
- export class State {
2
- state;
3
- constructor() {
4
- this.state = new Map();
5
- }
6
- set(key, value) {
7
- this.state.set(key, value);
8
- }
9
- get(key) {
10
- return this.state.get(key);
11
- }
12
- delete(key) {
13
- return this.state.delete(key);
14
- }
15
- has(key) {
16
- return this.state.has(key);
17
- }
18
- keys() {
19
- return Array.from(this.state.keys());
20
- }
21
- values() {
22
- return Array.from(this.state.values());
23
- }
24
- entries() {
25
- return Array.from(this.state.entries());
26
- }
27
- clear() {
28
- this.state.clear();
29
- }
30
- }
@@ -1,10 +0,0 @@
1
- import { Router } from "../core/router.js";
2
- import { StaticServeOption } from "../types/index.js";
3
- export declare const mimeTypes: {
4
- [key: string]: string;
5
- };
6
- export declare const defaultMimeType = "application/octet-stream";
7
- export declare function getFiles(dir: string, basePath: string | undefined, ref: Router<any>, option: StaticServeOption): Promise<{
8
- file: string;
9
- path: string;
10
- }[]>;
@@ -1,32 +0,0 @@
1
- import { Readable } from "node:stream";
2
- export function toWebRequest(req, method = "GET") {
3
- const headers = {};
4
- for (const [key, value] of Object.entries(req.headers)) {
5
- if (Array.isArray(value)) {
6
- headers[key] = value.join(", ");
7
- }
8
- else if (typeof value === "string") {
9
- headers[key] = value;
10
- }
11
- }
12
- const isEncrypted = (req.socket && req.socket.encrypted) || false;
13
- const protocol = isEncrypted ? "https:" : "http:";
14
- let host = "localhost";
15
- const hostHeader = req.headers.host;
16
- if (typeof hostHeader === "string") {
17
- host = hostHeader;
18
- }
19
- const urlStr = req.url ?? "/";
20
- const fullUrl = new URL(urlStr, `${protocol}//${host}`);
21
- const hasBody = !["GET", "HEAD"].includes(method.toUpperCase());
22
- const body = hasBody ? Readable.toWeb(req) : undefined;
23
- const abortController = new AbortController();
24
- req?.once("close", () => abortController.abort());
25
- return new Request(fullUrl.href, {
26
- method,
27
- headers,
28
- body,
29
- signal: abortController.signal,
30
- duplex: hasBody ? "half" : undefined,
31
- });
32
- }
package/ws/deno.d.ts DELETED
@@ -1,6 +0,0 @@
1
- import { Context } from "../index.js";
2
- import { WebSocketEvent, WebSocketOptions } from "./index.js";
3
- export declare class DenoTransport {
4
- upgrade(ctx: Context, event: WebSocketEvent, options: WebSocketOptions): Promise<Response>;
5
- private setupHandlers;
6
- }
package/ws/deno.js DELETED
@@ -1,16 +0,0 @@
1
- export class DenoTransport {
2
- async upgrade(ctx, event, options) {
3
- const { socket, response } = Deno.upgradeWebSocket(ctx.req.rawRequest, {
4
- protocol: options.protocol,
5
- idleTimeout: options.idleTimeout,
6
- });
7
- this.setupHandlers(socket, ctx, event);
8
- return response;
9
- }
10
- setupHandlers(ws, ctx, event) {
11
- ws.onopen = () => event.open?.(ws, ctx);
12
- ws.onmessage = (e) => event.message?.(ws, e.data);
13
- ws.onclose = (e) => event.close?.(ws, { code: e.code, reason: e.reason });
14
- ws.onerror = (err) => event.error?.(ws, err);
15
- }
16
- }
package/ws/index.d.ts DELETED
@@ -1,180 +0,0 @@
1
- import { Context } from "../index.js";
2
- import { CallbackReturn, Middleware } from "../types/index.js";
3
- /**
4
- * Type definition for WebSocket event handlers.
5
- * @template T - The type of data expected by the handler
6
- * @param {WebSocket} ws - The WebSocket instance
7
- * @param {T} [data] - Optional data associated with the event
8
- * @returns {Promise<void> | void}
9
- */
10
- type WebSocketHandler<T = any> = (ws: WebSocket, data?: T) => Promise<void> | void;
11
- /**
12
- * Defines all supported WebSocket event handlers.
13
- */
14
- export type WebSocketEvent = {
15
- /**
16
- * Triggered when the WebSocket connection is successfully opened.(make sure it support in node)
17
- */
18
- open?: WebSocketHandler;
19
- /**
20
- * Triggered when a message is received from the client.
21
- * Supports `string`, `Buffer`, or `ArrayBuffer` payloads.
22
- */
23
- message?: WebSocketHandler<string | Buffer | ArrayBuffer>;
24
- /**
25
- * Triggered when the WebSocket connection is closed.
26
- * Provides the close code and reason.
27
- */
28
- close?: WebSocketHandler<{
29
- code: number;
30
- reason: string;
31
- }>;
32
- /**
33
- * Triggered when an error occurs during the WebSocket lifecycle.
34
- * Not supported in Bun.
35
- */
36
- error?: WebSocketHandler<Error | any>;
37
- /**
38
- * Triggered when the socket drain event occurs.
39
- * Not supported in Deno and Node.
40
- */
41
- drain?: WebSocketHandler;
42
- /**
43
- * Triggered when a ping frame is received from the client.
44
- * Not supported in Deno.
45
- */
46
- ping?: WebSocketHandler<Buffer>;
47
- /**
48
- * Triggered when a pong frame is received from the client.
49
- * Not supported in Deno.
50
- */
51
- pong?: WebSocketHandler<Buffer>;
52
- };
53
- /**
54
- * Callback function that returns WebSocket event handlers based on context.
55
- * @param {Context} ctx - The request context
56
- * @returns {WebSocketEvent} - Object containing WebSocket event handlers
57
- */
58
- export type WebSocketCallback = (ctx: Context) => WebSocketEvent;
59
- /**
60
- * Options for Zlib compression and decompression (Node.js only).
61
- */
62
- interface ZlibOptions {
63
- /**
64
- * The flush flag used by default.
65
- * @default constants.Z_NO_FLUSH
66
- */
67
- flush?: number;
68
- /**
69
- * The flush flag used when calling the end() method.
70
- * @default constants.Z_FINISH
71
- */
72
- finishFlush?: number;
73
- /**
74
- * The chunk size to use during compression.
75
- * @default 16 * 1024 (16384 bytes)
76
- */
77
- chunkSize?: number;
78
- /**
79
- * The base two logarithm of the window size (range: 8–15).
80
- */
81
- windowBits?: number;
82
- /**
83
- * Compression level (range: 0–9).
84
- * 0 = no compression, 9 = max compression.
85
- */
86
- level?: number;
87
- /**
88
- * Specifies how much memory should be allocated for internal compression state (1–9).
89
- * Only used during compression.
90
- */
91
- memLevel?: number;
92
- /**
93
- * Compression strategy to use (e.g., Z_DEFAULT_STRATEGY).
94
- * Only applies during compression.
95
- */
96
- strategy?: number;
97
- /**
98
- * A dictionary to use during compression/decompression.
99
- * Useful for specific protocols.
100
- */
101
- dictionary?: NodeJS.ArrayBufferView | ArrayBuffer;
102
- /**
103
- * If true, returns an object with `buffer` and `engine`.
104
- */
105
- info?: boolean;
106
- }
107
- interface ZlibInflateOptions extends ZlibOptions {
108
- /**
109
- * Limit the output buffer size when using convenience methods like `deflateSync`.
110
- * @default buffer.kMaxLength
111
- */
112
- maxOutputLength?: number;
113
- }
114
- /**
115
- * Options for enabling and configuring permessage-deflate compression in WebSocket.
116
- * Applicable only in Node.js environments.
117
- */
118
- interface PerMessageDeflateOptions {
119
- /**
120
- * When true, disables context takeover on the server side.
121
- * This can help reduce memory usage at the cost of compression efficiency.
122
- */
123
- serverNoContextTakeover?: boolean;
124
- /**
125
- * When true, disables context takeover on the client side.
126
- */
127
- clientNoContextTakeover?: boolean;
128
- /**
129
- * Specifies the server's maximum window bits (compression history buffer size).
130
- */
131
- serverMaxWindowBits?: number;
132
- /**
133
- * Specifies the client's maximum window bits.
134
- */
135
- clientMaxWindowBits?: number;
136
- /**
137
- * Options passed directly to zlib for the deflate (compression) stream.
138
- */
139
- zlibDeflateOptions?: ZlibOptions;
140
- /**
141
- * Options passed to zlib for the inflate (decompression) stream.
142
- */
143
- zlibInflateOptions?: ZlibInflateOptions;
144
- /**
145
- * Only compress messages bigger than this threshold (in bytes).
146
- */
147
- threshold?: number;
148
- /**
149
- * Limits how many concurrent zlib operations can be running.
150
- * Useful for limiting CPU/memory usage under heavy load.
151
- */
152
- concurrencyLimit?: number;
153
- }
154
- /**
155
- * Dynamic options for configuring WebSocket behavior across different runtimes.
156
- */
157
- export type WebSocketOptions = {
158
- /**
159
- * Called when an error occurs during the upgrade process.
160
- */
161
- onUpgradeError?: (err: Error, ctx: Context) => CallbackReturn;
162
- /**
163
- * Supported WebSocket subprotocols. (Deno only)
164
- */
165
- protocol?: string;
166
- /**
167
- * Time (in seconds) after which the WebSocket connection will be closed if idle. (Deno only)
168
- */
169
- idleTimeout?: number;
170
- /**
171
- * Enables per-message deflate compression. Can be a boolean or a detailed config. (Node.js only)
172
- */
173
- perMessageDeflate?: boolean | PerMessageDeflateOptions;
174
- /**
175
- * Maximum allowed message size in bytes. Default is 1MB if not provided. (Node.js only)
176
- */
177
- maxPayload?: number;
178
- };
179
- export declare function upgradeWebSocket(callback: WebSocketCallback, options?: WebSocketOptions): Middleware;
180
- export default upgradeWebSocket;
package/ws/index.js DELETED
@@ -1,50 +0,0 @@
1
- import { Environment } from "../core/environment.js";
2
- import { DenoTransport } from "./deno.js";
3
- import { NodeTransport } from "./node.js";
4
- export function upgradeWebSocket(callback, options = {}) {
5
- const { onUpgradeError = (error, ctx) => {
6
- ctx.setStatus = 401;
7
- return ctx.text(error.message);
8
- }, protocol, idleTimeout = 30000, perMessageDeflate, maxPayload = 1048576, } = options;
9
- return async (ctx, next) => {
10
- const upgrade = ctx.req.headers.get("upgrade")?.toLowerCase();
11
- const connection = ctx.req.headers.get("connection")?.toLowerCase();
12
- const key = ctx.req.headers.get("sec-websocket-key");
13
- if (upgrade !== "websocket" || !connection?.includes("upgrade") || !key) {
14
- if (next) {
15
- ctx.body = { error: "401 Bad Request: Invalid WebSocket headers" };
16
- return next();
17
- }
18
- ctx.setStatus = 401;
19
- return onUpgradeError(new Error("401 Bad Request: Invalid WebSocket headers"), ctx);
20
- }
21
- ctx.wsProtocol = ctx.req.urlRef.protocol === "https:" ? "wss" : "ws";
22
- try {
23
- const env = Environment.getEnvironment;
24
- if (!callback) {
25
- throw new Error("WebSocket callback is missing. Please provide a valid callback function to handle the WebSocket events.");
26
- }
27
- let websocketCallback = callback(ctx);
28
- switch (env) {
29
- case "deno":
30
- return new DenoTransport().upgrade(ctx, websocketCallback, {
31
- idleTimeout,
32
- protocol,
33
- });
34
- case "bun":
35
- return callback;
36
- case "node":
37
- return new NodeTransport().upgrade(ctx, websocketCallback, {
38
- maxPayload,
39
- perMessageDeflate,
40
- });
41
- default:
42
- throw new Error("Unsupported environment for WebSocket upgrade.");
43
- }
44
- }
45
- catch (err) {
46
- return onUpgradeError(new Error("WebSocket Upgrade Failed"), ctx);
47
- }
48
- };
49
- }
50
- export default upgradeWebSocket;
package/ws/node.d.ts DELETED
@@ -1,7 +0,0 @@
1
- import { Context } from "../index.js";
2
- import { WebSocketEvent, WebSocketOptions } from "./index.js";
3
- export declare class NodeTransport {
4
- private wss?;
5
- upgrade(ctx: Context, event: WebSocketEvent, options: WebSocketOptions): Promise<(ctx: Context, server: any) => void>;
6
- private setupHandlers;
7
- }
package/ws/node.js DELETED
@@ -1,28 +0,0 @@
1
- export class NodeTransport {
2
- wss;
3
- async upgrade(ctx, event, options) {
4
- let { WebSocketServer } = await import("ws");
5
- return (ctx, server) => {
6
- this.wss = new WebSocketServer({
7
- noServer: true,
8
- maxPayload: options.maxPayload ?? 1048576,
9
- perMessageDeflate: options.perMessageDeflate ?? false,
10
- });
11
- server?.on("upgrade", (request, socket, head) => {
12
- this.wss?.handleUpgrade(request, socket, head, (ws) => {
13
- this.wss?.emit("connection", ws, request);
14
- this.setupHandlers(ws, event, options);
15
- });
16
- });
17
- };
18
- }
19
- setupHandlers(ws, event, options) {
20
- event.open?.(ws);
21
- ws.on("open", () => event.open?.(ws));
22
- ws.on("message", (data) => event.message?.(ws, data));
23
- ws.on("close", (code, reason) => event.close?.(ws, { code, reason }));
24
- ws.on("error", (err) => event.error?.(ws, err));
25
- ws.on("ping", (data) => event.ping?.(ws, data));
26
- ws.on("pong", (data) => event.pong?.(ws, data));
27
- }
28
- }
File without changes