@furystack/rest-service 10.0.27 → 10.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +249 -12
- package/esm/api-manager.d.ts +1 -3
- package/esm/api-manager.d.ts.map +1 -1
- package/esm/api-manager.js +4 -6
- package/esm/api-manager.js.map +1 -1
- package/esm/header-processor.d.ts +39 -0
- package/esm/header-processor.d.ts.map +1 -0
- package/esm/header-processor.js +113 -0
- package/esm/header-processor.js.map +1 -0
- package/esm/header-processor.spec.d.ts +2 -0
- package/esm/header-processor.spec.d.ts.map +1 -0
- package/esm/header-processor.spec.js +420 -0
- package/esm/header-processor.spec.js.map +1 -0
- package/esm/helpers.d.ts +69 -1
- package/esm/helpers.d.ts.map +1 -1
- package/esm/helpers.js +70 -1
- package/esm/helpers.js.map +1 -1
- package/esm/helpers.spec.js +21 -5
- package/esm/helpers.spec.js.map +1 -1
- package/esm/http-proxy-handler.d.ts +53 -0
- package/esm/http-proxy-handler.d.ts.map +1 -0
- package/esm/http-proxy-handler.js +179 -0
- package/esm/http-proxy-handler.js.map +1 -0
- package/esm/http-user-context.d.ts +4 -4
- package/esm/http-user-context.d.ts.map +1 -1
- package/esm/http-user-context.js +4 -4
- package/esm/http-user-context.js.map +1 -1
- package/esm/index.d.ts +1 -0
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +1 -0
- package/esm/index.js.map +1 -1
- package/esm/path-processor.d.ts +33 -0
- package/esm/path-processor.d.ts.map +1 -0
- package/esm/path-processor.js +58 -0
- package/esm/path-processor.js.map +1 -0
- package/esm/path-processor.spec.d.ts +2 -0
- package/esm/path-processor.spec.d.ts.map +1 -0
- package/esm/path-processor.spec.js +256 -0
- package/esm/path-processor.spec.js.map +1 -0
- package/esm/proxy-manager.d.ts +52 -0
- package/esm/proxy-manager.d.ts.map +1 -0
- package/esm/proxy-manager.js +84 -0
- package/esm/proxy-manager.js.map +1 -0
- package/esm/proxy-manager.spec.d.ts +2 -0
- package/esm/proxy-manager.spec.d.ts.map +1 -0
- package/esm/proxy-manager.spec.js +1781 -0
- package/esm/proxy-manager.spec.js.map +1 -0
- package/esm/server-manager.d.ts +7 -0
- package/esm/server-manager.d.ts.map +1 -1
- package/esm/server-manager.js +12 -0
- package/esm/server-manager.js.map +1 -1
- package/esm/static-server-manager.d.ts.map +1 -1
- package/esm/static-server-manager.js +5 -7
- package/esm/static-server-manager.js.map +1 -1
- package/esm/websocket-proxy-handler.d.ts +44 -0
- package/esm/websocket-proxy-handler.d.ts.map +1 -0
- package/esm/websocket-proxy-handler.js +157 -0
- package/esm/websocket-proxy-handler.js.map +1 -0
- package/package.json +12 -10
- package/src/api-manager.ts +5 -15
- package/src/header-processor.spec.ts +514 -0
- package/src/header-processor.ts +140 -0
- package/src/helpers.spec.ts +23 -5
- package/src/helpers.ts +72 -1
- package/src/http-proxy-handler.ts +215 -0
- package/src/http-user-context.ts +6 -6
- package/src/index.ts +1 -0
- package/src/path-processor.spec.ts +318 -0
- package/src/path-processor.ts +69 -0
- package/src/proxy-manager.spec.ts +2094 -0
- package/src/proxy-manager.ts +101 -0
- package/src/server-manager.ts +19 -0
- package/src/static-server-manager.ts +5 -7
- package/src/websocket-proxy-handler.ts +204 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy-manager.spec.js","sourceRoot":"","sources":["../src/proxy-manager.spec.ts"],"names":[],"mappings":"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"}
|
package/esm/server-manager.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { EventHub } from '@furystack/utils';
|
|
2
2
|
import type { IncomingMessage, Server, ServerResponse } from 'http';
|
|
3
|
+
import type { Duplex } from 'stream';
|
|
3
4
|
export interface ServerOptions {
|
|
4
5
|
hostName?: string;
|
|
5
6
|
port: number;
|
|
@@ -8,9 +9,15 @@ export interface OnRequest {
|
|
|
8
9
|
req: IncomingMessage;
|
|
9
10
|
res: ServerResponse;
|
|
10
11
|
}
|
|
12
|
+
export interface OnUpgrade {
|
|
13
|
+
req: IncomingMessage;
|
|
14
|
+
socket: Duplex;
|
|
15
|
+
head: Buffer;
|
|
16
|
+
}
|
|
11
17
|
export interface ServerApi {
|
|
12
18
|
shouldExec: (options: OnRequest) => boolean;
|
|
13
19
|
onRequest: (options: OnRequest) => Promise<void>;
|
|
20
|
+
onUpgrade?: (options: OnUpgrade) => Promise<void>;
|
|
14
21
|
}
|
|
15
22
|
export interface ServerRecord {
|
|
16
23
|
server: Server;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-manager.d.ts","sourceRoot":"","sources":["../src/server-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"server-manager.d.ts","sourceRoot":"","sources":["../src/server-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,MAAM,CAAA;AAInE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAEpC,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,eAAe,CAAA;IACpB,GAAG,EAAE,cAAc,CAAA;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,eAAe,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,CAAC,OAAO,EAAE,SAAS,KAAK,OAAO,CAAA;IAC3C,SAAS,EAAE,CAAC,OAAO,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAChD,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAClD;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,SAAS,EAAE,CAAA;CAClB;AAED,qBACa,aACX,SAAQ,QAAQ,CAAC;IAAE,eAAe,EAAE,CAAC,OAAO,EAAE,eAAe,EAAE,cAAc,CAAC,eAAe,CAAC,CAAC,CAAA;CAAE,CACjG,YAAW,eAAe;IAE1B,OAAc,YAAY,SAAc;IACjC,OAAO,4BAAkC;IAChD,OAAO,CAAC,aAAa,CAAoB;IACzC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,UAAU,CAC0D;IAE5E,OAAO,CAAC,YAAY,CAGnB;IACY,CAAC,MAAM,CAAC,YAAY,CAAC;IAoBrB,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;CA0CxE"}
|
package/esm/server-manager.js
CHANGED
|
@@ -54,6 +54,18 @@ let ServerManager = class ServerManager extends EventHub {
|
|
|
54
54
|
res.destroy();
|
|
55
55
|
}
|
|
56
56
|
});
|
|
57
|
+
server.on('upgrade', (req, socket, head) => {
|
|
58
|
+
const apiMatch = apis.find((api) => api.shouldExec({ req, res: {} }));
|
|
59
|
+
if (apiMatch?.onUpgrade) {
|
|
60
|
+
apiMatch.onUpgrade({ req, socket, head }).catch((error) => {
|
|
61
|
+
this.emit('onRequestFailed', [error, req, {}]);
|
|
62
|
+
socket.destroy();
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
socket.destroy();
|
|
67
|
+
}
|
|
68
|
+
});
|
|
57
69
|
server.on('connection', this.onConnection);
|
|
58
70
|
server.on('listening', () => resolve());
|
|
59
71
|
server.on('error', (err) => reject(err));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-manager.js","sourceRoot":"","sources":["../src/server-manager.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAE3C,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAEnC,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"server-manager.js","sourceRoot":"","sources":["../src/server-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"static-server-manager.d.ts","sourceRoot":"","sources":["../src/static-server-manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"static-server-manager.d.ts","sourceRoot":"","sources":["../src/static-server-manager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAkB,MAAM,MAAM,CAAA;AAKhF,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,mBAAmB,CAAA;CAC9B;AAED,qBACa,mBAAmB;IAC9B,iBACyB,aAAa,CAAe;YAEvC,QAAQ;IAwBf,UAAU,GACd,SAAS,MAAM,MACf,SAAS;QAAE,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,KAAK,GAAG,QAAQ,CAAC,CAAA;KAAE,aACoD;IAEhH,OAAO,CAAC,SAAS,CA2BhB;IAEY,aAAa,CAAC,OAAO,EAAE,mBAAmB;CAQxD"}
|
|
@@ -8,10 +8,11 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
8
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
9
|
};
|
|
10
10
|
import { Injectable, Injected } from '@furystack/inject';
|
|
11
|
+
import { PathHelper } from '@furystack/utils';
|
|
11
12
|
import { createReadStream } from 'fs';
|
|
12
13
|
import { access, stat } from 'fs/promises';
|
|
13
|
-
import { getMimeForFile } from './mime-types.js';
|
|
14
14
|
import { join, normalize, sep } from 'path';
|
|
15
|
+
import { getMimeForFile } from './mime-types.js';
|
|
15
16
|
import { ServerManager } from './server-manager.js';
|
|
16
17
|
let StaticServerManager = class StaticServerManager {
|
|
17
18
|
async sendFile({ fullPath, headers, res, }) {
|
|
@@ -25,14 +26,11 @@ let StaticServerManager = class StaticServerManager {
|
|
|
25
26
|
Object.entries(head).map(([key, value]) => res.setHeader(key, value));
|
|
26
27
|
await new Promise((resolve, reject) => createReadStream(fullPath, { autoClose: true }).once('finish', resolve).once('error', reject).pipe(res));
|
|
27
28
|
}
|
|
28
|
-
shouldExec = (baseUrl) => ({ req }) => req.url &&
|
|
29
|
-
req.method?.toUpperCase() === 'GET' &&
|
|
30
|
-
(req.url === baseUrl || req.url.startsWith(baseUrl[baseUrl.length - 1] === '/' ? baseUrl : `${baseUrl}/`))
|
|
31
|
-
? true
|
|
32
|
-
: false;
|
|
29
|
+
shouldExec = (baseUrl) => ({ req }) => req.url && req.method?.toUpperCase() === 'GET' && PathHelper.matchesBaseUrl(req.url, baseUrl) ? true : false;
|
|
33
30
|
onRequest = ({ path, baseUrl, fallback, headers, }) => {
|
|
34
31
|
return async ({ req, res }) => {
|
|
35
|
-
const
|
|
32
|
+
const extractedPath = PathHelper.extractPath(req.url, baseUrl);
|
|
33
|
+
const filePath = (extractedPath || '/').replaceAll('/', sep);
|
|
36
34
|
const fullPath = normalize(join(path, filePath));
|
|
37
35
|
try {
|
|
38
36
|
await this.sendFile({ fullPath, res, headers });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"static-server-manager.js","sourceRoot":"","sources":["../src/static-server-manager.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"static-server-manager.js","sourceRoot":"","sources":["../src/static-server-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { IncomingMessage, OutgoingHttpHeaders } from 'http';
|
|
2
|
+
import type { Duplex } from 'stream';
|
|
3
|
+
export interface WebSocketProxyOptions {
|
|
4
|
+
sourceBaseUrl: string;
|
|
5
|
+
targetBaseUrl: string;
|
|
6
|
+
pathRewrite?: (sourcePath: string) => string;
|
|
7
|
+
headers?: (originalHeaders: OutgoingHttpHeaders) => OutgoingHttpHeaders;
|
|
8
|
+
timeout?: number;
|
|
9
|
+
onError?: (error: {
|
|
10
|
+
from: string;
|
|
11
|
+
to: string;
|
|
12
|
+
error: unknown;
|
|
13
|
+
}) => void;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Handles WebSocket upgrade proxying with bidirectional streaming
|
|
17
|
+
*/
|
|
18
|
+
export declare class WebSocketProxyHandler {
|
|
19
|
+
private readonly options;
|
|
20
|
+
private readonly headerProcessor;
|
|
21
|
+
private readonly pathProcessor;
|
|
22
|
+
constructor(options: WebSocketProxyOptions);
|
|
23
|
+
/**
|
|
24
|
+
* Builds WebSocket-specific upgrade headers
|
|
25
|
+
*/
|
|
26
|
+
private buildUpgradeHeaders;
|
|
27
|
+
/**
|
|
28
|
+
* Writes the upgrade response headers to the client socket
|
|
29
|
+
*/
|
|
30
|
+
private writeUpgradeResponse;
|
|
31
|
+
/**
|
|
32
|
+
* Sets up bidirectional piping between client and target sockets with error handling
|
|
33
|
+
*/
|
|
34
|
+
private setupBidirectionalPipe;
|
|
35
|
+
/**
|
|
36
|
+
* Handles WebSocket upgrade errors
|
|
37
|
+
*/
|
|
38
|
+
private handleUpgradeError;
|
|
39
|
+
/**
|
|
40
|
+
* Main handler for WebSocket upgrade requests
|
|
41
|
+
*/
|
|
42
|
+
handle(req: IncomingMessage, socket: Duplex, head: Buffer): Promise<void>;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=websocket-proxy-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket-proxy-handler.d.ts","sourceRoot":"","sources":["../src/websocket-proxy-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAA;AAGhE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAIpC,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAA;IAC5C,OAAO,CAAC,EAAE,CAAC,eAAe,EAAE,mBAAmB,KAAK,mBAAmB,CAAA;IACvE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAA;CACxE;AAED;;GAEG;AACH,qBAAa,qBAAqB;IAIpB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAwB;IACxD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAsB;gBAEvB,OAAO,EAAE,qBAAqB;IAE3D;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAyB3B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAa5B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA+C9B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAW1B;;OAEG;IACU,MAAM,CAAC,GAAG,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAmEvF"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { request as httpRequest } from 'http';
|
|
2
|
+
import { request as httpsRequest } from 'https';
|
|
3
|
+
import { HeaderProcessor } from './header-processor.js';
|
|
4
|
+
import { PathProcessor } from './path-processor.js';
|
|
5
|
+
/**
|
|
6
|
+
* Handles WebSocket upgrade proxying with bidirectional streaming
|
|
7
|
+
*/
|
|
8
|
+
export class WebSocketProxyHandler {
|
|
9
|
+
options;
|
|
10
|
+
headerProcessor = new HeaderProcessor();
|
|
11
|
+
pathProcessor = new PathProcessor();
|
|
12
|
+
constructor(options) {
|
|
13
|
+
this.options = options;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Builds WebSocket-specific upgrade headers
|
|
17
|
+
*/
|
|
18
|
+
buildUpgradeHeaders(req, targetHost, finalHeaders) {
|
|
19
|
+
const upgradeHeaders = this.headerProcessor.convertHeadersToRecord(finalHeaders);
|
|
20
|
+
// Add required WebSocket upgrade headers
|
|
21
|
+
upgradeHeaders.Host = targetHost;
|
|
22
|
+
upgradeHeaders.Connection = 'Upgrade';
|
|
23
|
+
upgradeHeaders.Upgrade = 'websocket';
|
|
24
|
+
upgradeHeaders['Sec-WebSocket-Version'] = req.headers['sec-websocket-version'];
|
|
25
|
+
upgradeHeaders['Sec-WebSocket-Key'] = req.headers['sec-websocket-key'];
|
|
26
|
+
// Add optional WebSocket headers
|
|
27
|
+
if (req.headers['sec-websocket-protocol']) {
|
|
28
|
+
upgradeHeaders['Sec-WebSocket-Protocol'] = req.headers['sec-websocket-protocol'];
|
|
29
|
+
}
|
|
30
|
+
if (req.headers['sec-websocket-extensions']) {
|
|
31
|
+
upgradeHeaders['Sec-WebSocket-Extensions'] = req.headers['sec-websocket-extensions'];
|
|
32
|
+
}
|
|
33
|
+
return upgradeHeaders;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Writes the upgrade response headers to the client socket
|
|
37
|
+
*/
|
|
38
|
+
writeUpgradeResponse(socket, proxyRes) {
|
|
39
|
+
const responseHeaders = [`HTTP/1.1 ${proxyRes.statusCode} ${proxyRes.statusMessage}`];
|
|
40
|
+
for (const [key, value] of Object.entries(proxyRes.headers)) {
|
|
41
|
+
if (Array.isArray(value)) {
|
|
42
|
+
value.forEach((v) => responseHeaders.push(`${key}: ${v}`));
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
responseHeaders.push(`${key}: ${value}`);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
responseHeaders.push('', '');
|
|
49
|
+
socket.write(responseHeaders.join('\r\n'));
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Sets up bidirectional piping between client and target sockets with error handling
|
|
53
|
+
*/
|
|
54
|
+
setupBidirectionalPipe(clientSocket, proxySocket, clientHead, proxyHead) {
|
|
55
|
+
// Write initial data
|
|
56
|
+
if (proxyHead.length > 0) {
|
|
57
|
+
clientSocket.write(proxyHead);
|
|
58
|
+
}
|
|
59
|
+
if (clientHead.length > 0) {
|
|
60
|
+
proxySocket.write(clientHead);
|
|
61
|
+
}
|
|
62
|
+
// Bidirectional pipe
|
|
63
|
+
proxySocket.pipe(clientSocket);
|
|
64
|
+
clientSocket.pipe(proxySocket);
|
|
65
|
+
// Handle errors and cleanup
|
|
66
|
+
const cleanup = () => {
|
|
67
|
+
proxySocket.destroy();
|
|
68
|
+
clientSocket.destroy();
|
|
69
|
+
};
|
|
70
|
+
const handleError = (error) => {
|
|
71
|
+
if (this.options.onError) {
|
|
72
|
+
this.options.onError({
|
|
73
|
+
from: this.options.sourceBaseUrl,
|
|
74
|
+
to: this.options.targetBaseUrl,
|
|
75
|
+
error,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
cleanup();
|
|
79
|
+
};
|
|
80
|
+
proxySocket.on('error', handleError);
|
|
81
|
+
clientSocket.on('error', handleError);
|
|
82
|
+
proxySocket.on('close', () => {
|
|
83
|
+
clientSocket.destroy();
|
|
84
|
+
});
|
|
85
|
+
clientSocket.on('close', () => {
|
|
86
|
+
proxySocket.destroy();
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Handles WebSocket upgrade errors
|
|
91
|
+
*/
|
|
92
|
+
handleUpgradeError(error, socket) {
|
|
93
|
+
if (this.options.onError) {
|
|
94
|
+
this.options.onError({
|
|
95
|
+
from: this.options.sourceBaseUrl,
|
|
96
|
+
to: this.options.targetBaseUrl,
|
|
97
|
+
error,
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
socket.destroy();
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Main handler for WebSocket upgrade requests
|
|
104
|
+
*/
|
|
105
|
+
async handle(req, socket, head) {
|
|
106
|
+
try {
|
|
107
|
+
// Build target URL
|
|
108
|
+
const targetUrl = this.pathProcessor.processUrl(req.url, this.options.sourceBaseUrl, this.options.targetBaseUrl, this.options.pathRewrite);
|
|
109
|
+
const parsedTargetUrl = new URL(targetUrl);
|
|
110
|
+
// Process headers
|
|
111
|
+
const originalHeaders = {};
|
|
112
|
+
for (const [key, value] of Object.entries(req.headers)) {
|
|
113
|
+
originalHeaders[key] = Array.isArray(value) ? value.join(', ') : value;
|
|
114
|
+
}
|
|
115
|
+
const filteredHeaders = this.headerProcessor.filterHeaders(originalHeaders);
|
|
116
|
+
const finalHeaders = this.options.headers ? this.options.headers(filteredHeaders) : filteredHeaders;
|
|
117
|
+
// Build WebSocket upgrade headers
|
|
118
|
+
const upgradeHeaders = this.buildUpgradeHeaders(req, parsedTargetUrl.host, finalHeaders);
|
|
119
|
+
// Set up timeout
|
|
120
|
+
const timeoutMs = this.options.timeout ?? 30000;
|
|
121
|
+
const timeoutId = setTimeout(() => {
|
|
122
|
+
socket.destroy();
|
|
123
|
+
}, timeoutMs);
|
|
124
|
+
// Create upgrade request to target server
|
|
125
|
+
const requestFn = parsedTargetUrl.protocol === 'https:' ? httpsRequest : httpRequest;
|
|
126
|
+
const proxyReq = requestFn({
|
|
127
|
+
host: parsedTargetUrl.hostname,
|
|
128
|
+
port: parsedTargetUrl.port || (parsedTargetUrl.protocol === 'https:' ? 443 : 80),
|
|
129
|
+
path: parsedTargetUrl.pathname + parsedTargetUrl.search,
|
|
130
|
+
method: 'GET',
|
|
131
|
+
headers: upgradeHeaders,
|
|
132
|
+
});
|
|
133
|
+
proxyReq.on('upgrade', (proxyRes, proxySocket, proxyHead) => {
|
|
134
|
+
clearTimeout(timeoutId);
|
|
135
|
+
// Write the upgrade response to the client socket
|
|
136
|
+
this.writeUpgradeResponse(socket, proxyRes);
|
|
137
|
+
// Set up bidirectional piping
|
|
138
|
+
this.setupBidirectionalPipe(socket, proxySocket, head, proxyHead);
|
|
139
|
+
});
|
|
140
|
+
proxyReq.on('error', (error) => {
|
|
141
|
+
clearTimeout(timeoutId);
|
|
142
|
+
this.handleUpgradeError(error, socket);
|
|
143
|
+
});
|
|
144
|
+
proxyReq.on('timeout', () => {
|
|
145
|
+
clearTimeout(timeoutId);
|
|
146
|
+
const timeoutError = new Error('WebSocket upgrade timeout');
|
|
147
|
+
this.handleUpgradeError(timeoutError, socket);
|
|
148
|
+
proxyReq.destroy();
|
|
149
|
+
});
|
|
150
|
+
proxyReq.end();
|
|
151
|
+
}
|
|
152
|
+
catch (error) {
|
|
153
|
+
this.handleUpgradeError(error, socket);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=websocket-proxy-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket-proxy-handler.js","sourceRoot":"","sources":["../src/websocket-proxy-handler.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@furystack/rest-service",
|
|
3
|
-
"version": "10.0
|
|
3
|
+
"version": "10.1.0",
|
|
4
4
|
"description": "Repository implementation for FuryStack",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
@@ -37,22 +37,24 @@
|
|
|
37
37
|
},
|
|
38
38
|
"homepage": "https://github.com/furystack/furystack",
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@furystack/core": "^15.0.
|
|
41
|
-
"@furystack/inject": "^12.0.
|
|
42
|
-
"@furystack/repository": "^10.0.
|
|
43
|
-
"@furystack/rest": "^8.0.
|
|
44
|
-
"@furystack/security": "^6.0.
|
|
45
|
-
"@furystack/utils": "^8.1.
|
|
40
|
+
"@furystack/core": "^15.0.28",
|
|
41
|
+
"@furystack/inject": "^12.0.22",
|
|
42
|
+
"@furystack/repository": "^10.0.28",
|
|
43
|
+
"@furystack/rest": "^8.0.28",
|
|
44
|
+
"@furystack/security": "^6.0.28",
|
|
45
|
+
"@furystack/utils": "^8.1.4",
|
|
46
46
|
"ajv": "^8.17.1",
|
|
47
47
|
"ajv-formats": "^3.0.1",
|
|
48
48
|
"path-to-regexp": "^8.3.0",
|
|
49
49
|
"semaphore-async-await": "^1.5.1"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
|
-
"@furystack/rest-client-fetch": "^8.0.
|
|
53
|
-
"@types/node": "^24.7.
|
|
52
|
+
"@furystack/rest-client-fetch": "^8.0.28",
|
|
53
|
+
"@types/node": "^24.7.2",
|
|
54
|
+
"@types/ws": "^8.5.13",
|
|
54
55
|
"typescript": "^5.9.3",
|
|
55
|
-
"vitest": "^3.2.4"
|
|
56
|
+
"vitest": "^3.2.4",
|
|
57
|
+
"ws": "^8.18.0"
|
|
56
58
|
},
|
|
57
59
|
"gitHead": "1045d854bfd8c475b7035471d130d401417a2321"
|
|
58
60
|
}
|
package/src/api-manager.ts
CHANGED
|
@@ -103,13 +103,7 @@ export type OnRequestOptions = OnRequest & {
|
|
|
103
103
|
}
|
|
104
104
|
|
|
105
105
|
@Injectable({ lifetime: 'singleton' })
|
|
106
|
-
export class ApiManager
|
|
107
|
-
private readonly apis = new Map<string, NewCompiledApi>()
|
|
108
|
-
|
|
109
|
-
public [Symbol.dispose]() {
|
|
110
|
-
this.apis.clear()
|
|
111
|
-
}
|
|
112
|
-
|
|
106
|
+
export class ApiManager {
|
|
113
107
|
private getSuportedMethods(api: RestApiImplementation<RestApi>): Method[] {
|
|
114
108
|
return Object.keys(api) as Method[]
|
|
115
109
|
}
|
|
@@ -193,7 +187,7 @@ export class ApiManager implements Disposable {
|
|
|
193
187
|
return options.method &&
|
|
194
188
|
options.url &&
|
|
195
189
|
(options.supportedMethods.includes(options.method) || options.method === 'OPTIONS') &&
|
|
196
|
-
PathHelper.
|
|
190
|
+
PathHelper.matchesBaseUrl(options.url, options.rootApiPath)
|
|
197
191
|
? true
|
|
198
192
|
: false
|
|
199
193
|
}
|
|
@@ -266,13 +260,9 @@ export class ApiManager implements Disposable {
|
|
|
266
260
|
}
|
|
267
261
|
|
|
268
262
|
private async onMessage(options: OnRequestOptions) {
|
|
269
|
-
const
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
`${options.hostName || ServerManager.DEFAULT_HOST}:${options.port}`,
|
|
273
|
-
options.req.url as string,
|
|
274
|
-
),
|
|
275
|
-
)
|
|
263
|
+
const protocol = 'http://'
|
|
264
|
+
const host = `${options.hostName || ServerManager.DEFAULT_HOST}:${options.port}`
|
|
265
|
+
const fullUrl = new URL(PathHelper.joinUrl(`${protocol}${host}`, options.req.url as string))
|
|
276
266
|
|
|
277
267
|
if (options.cors) {
|
|
278
268
|
addCorsHeaders(options.cors, options.req, options.res)
|