@travetto/web-connect 7.0.0-rc.2 → 7.0.0-rc.3
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 +2 -2
- package/package.json +4 -4
- package/src/connect.ts +7 -7
- package/src/util.ts +11 -11
package/README.md
CHANGED
|
@@ -33,8 +33,8 @@ async authenticate(input: object, ctx: WebFilterContext): Promise<Principal | un
|
|
|
33
33
|
state: PassportUtil.enhanceState(ctx, requestOptions.state)
|
|
34
34
|
};
|
|
35
35
|
|
|
36
|
-
const user = await WebConnectUtil.invoke<V>(ctx, (
|
|
37
|
-
passport.authenticate(this.#strategyName, options, next)(
|
|
36
|
+
const user = await WebConnectUtil.invoke<V>(ctx, (request, response, next) =>
|
|
37
|
+
passport.authenticate(this.#strategyName, options, next)(request, response)
|
|
38
38
|
);
|
|
39
39
|
|
|
40
40
|
if (user) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@travetto/web-connect",
|
|
3
|
-
"version": "7.0.0-rc.
|
|
3
|
+
"version": "7.0.0-rc.3",
|
|
4
4
|
"description": "Web integration for Connect-Like Resources",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"web",
|
|
@@ -24,11 +24,11 @@
|
|
|
24
24
|
"directory": "module/web-connect"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@travetto/web": "^7.0.0-rc.
|
|
27
|
+
"@travetto/web": "^7.0.0-rc.3"
|
|
28
28
|
},
|
|
29
29
|
"peerDependencies": {
|
|
30
|
-
"@travetto/cli": "^7.0.0-rc.
|
|
31
|
-
"@travetto/test": "^7.0.0-rc.
|
|
30
|
+
"@travetto/cli": "^7.0.0-rc.2",
|
|
31
|
+
"@travetto/test": "^7.0.0-rc.2"
|
|
32
32
|
},
|
|
33
33
|
"peerDependenciesMeta": {
|
|
34
34
|
"@travetto/test": {
|
package/src/connect.ts
CHANGED
|
@@ -68,14 +68,14 @@ export class ConnectResponse implements Pick<ServerResponse,
|
|
|
68
68
|
return this.#response.context.httpStatusCode;
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
-
set statusCode(
|
|
72
|
-
this.#response.context.httpStatusCode =
|
|
71
|
+
set statusCode(code: number) {
|
|
72
|
+
this.#response.context.httpStatusCode = code;
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
writeHead(statusCode: unknown, statusMessage?: unknown, headers?: unknown): this {
|
|
76
76
|
this.#response.context.httpStatusCode = castTo(statusCode);
|
|
77
|
-
for (const [
|
|
78
|
-
this.#response.headers.set(
|
|
77
|
+
for (const [key, value] of Object.entries(headers ?? {})) {
|
|
78
|
+
this.#response.headers.set(key, value);
|
|
79
79
|
}
|
|
80
80
|
this.#headersSent = true;
|
|
81
81
|
return this;
|
|
@@ -119,7 +119,7 @@ export class ConnectResponse implements Pick<ServerResponse,
|
|
|
119
119
|
flushHeaders(): void {
|
|
120
120
|
this.#headersSent = true;
|
|
121
121
|
}
|
|
122
|
-
write(chunk: unknown, encoding?: unknown, callback?: (
|
|
122
|
+
write(chunk: unknown, encoding?: unknown, callback?: (error?: Error) => void): boolean {
|
|
123
123
|
if (this.#headersSent) {
|
|
124
124
|
this.flushHeaders();
|
|
125
125
|
}
|
|
@@ -137,13 +137,13 @@ export class ConnectResponse implements Pick<ServerResponse,
|
|
|
137
137
|
return this;
|
|
138
138
|
}
|
|
139
139
|
|
|
140
|
-
end(chunk?: unknown, encoding?: unknown,
|
|
140
|
+
end(chunk?: unknown, encoding?: unknown, callback?: () => void): this {
|
|
141
141
|
this.flushHeaders();
|
|
142
142
|
if (chunk) {
|
|
143
143
|
this.write(chunk, encoding);
|
|
144
144
|
}
|
|
145
145
|
this.#finished = true;
|
|
146
|
-
|
|
146
|
+
callback?.();
|
|
147
147
|
for (const item of this.#onEndHandlers) {
|
|
148
148
|
item();
|
|
149
149
|
}
|
package/src/util.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { WebFilterContext } from '@travetto/web';
|
|
|
5
5
|
import { ConnectRequest, ConnectResponse } from './connect';
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
type Middleware = (
|
|
8
|
+
type Middleware = (request: IncomingMessage, response: ServerResponse, next: (error?: unknown) => void) => void;
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* Utilities for invoking express middleware with a WebFilterContext
|
|
@@ -18,20 +18,20 @@ export class WebConnectUtil {
|
|
|
18
18
|
*/
|
|
19
19
|
static async invoke<T>(ctx: WebFilterContext,
|
|
20
20
|
handler: (
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
next: (
|
|
21
|
+
request: IncomingMessage,
|
|
22
|
+
response: ServerResponse,
|
|
23
|
+
next: (error: Error | null | undefined, value: T | undefined | null) => void
|
|
24
24
|
) => Middleware
|
|
25
25
|
): Promise<T | undefined> {
|
|
26
|
-
const
|
|
27
|
-
const
|
|
26
|
+
const connectRequest = ConnectRequest.get(ctx.request);
|
|
27
|
+
const connectResponse = ConnectResponse.get();
|
|
28
28
|
|
|
29
|
-
const
|
|
30
|
-
|
|
29
|
+
const promise = Promise.withResolvers<T | undefined>();
|
|
30
|
+
connectResponse.on('end', () => promise.resolve(null!));
|
|
31
31
|
|
|
32
|
-
handler(
|
|
33
|
-
const result = await
|
|
34
|
-
|
|
32
|
+
handler(connectRequest, connectResponse, (error, value) => error ? promise.reject(error) : promise.resolve(value!));
|
|
33
|
+
const result = await promise.promise;
|
|
34
|
+
connectResponse.throwIfSent();
|
|
35
35
|
return result;
|
|
36
36
|
}
|
|
37
37
|
}
|