@furystack/rest-service 12.1.0 โ 12.2.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/CHANGELOG.md +40 -0
- package/esm/api-manager.d.ts.map +1 -1
- package/esm/api-manager.js +16 -2
- package/esm/api-manager.js.map +1 -1
- package/esm/helpers.d.ts.map +1 -1
- package/esm/helpers.js +0 -2
- package/esm/helpers.js.map +1 -1
- package/esm/http-authentication-settings.d.ts +3 -3
- package/esm/http-authentication-settings.d.ts.map +1 -1
- package/esm/http-authentication-settings.js +3 -2
- package/esm/http-authentication-settings.js.map +1 -1
- package/esm/http-user-context.d.ts +14 -2
- package/esm/http-user-context.d.ts.map +1 -1
- package/esm/http-user-context.js +6 -1
- package/esm/http-user-context.js.map +1 -1
- package/esm/http-user-context.spec.js +75 -0
- package/esm/http-user-context.spec.js.map +1 -1
- package/esm/proxy-manager.d.ts +2 -1
- package/esm/proxy-manager.d.ts.map +1 -1
- package/esm/proxy-manager.js.map +1 -1
- package/esm/rest-service.integration.spec.js +72 -1
- package/esm/rest-service.integration.spec.js.map +1 -1
- package/esm/server-manager.d.ts +10 -1
- package/esm/server-manager.d.ts.map +1 -1
- package/esm/server-manager.js +11 -2
- package/esm/server-manager.js.map +1 -1
- package/package.json +8 -8
- package/src/api-manager.ts +17 -2
- package/src/helpers.ts +1 -3
- package/src/http-authentication-settings.ts +6 -4
- package/src/http-user-context.spec.ts +95 -0
- package/src/http-user-context.ts +16 -1
- package/src/proxy-manager.ts +2 -1
- package/src/rest-service.integration.spec.ts +88 -1
- package/src/server-manager.ts +18 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,45 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [12.2.0] - 2026-03-03
|
|
4
|
+
|
|
5
|
+
### โจ Features
|
|
6
|
+
|
|
7
|
+
### Server lifecycle events in `ServerManager`
|
|
8
|
+
|
|
9
|
+
`ServerManager` now emits `onServerListening` and `onServerClosed` events, allowing consumers to observe when HTTP servers start and stop:
|
|
10
|
+
|
|
11
|
+
```typescript
|
|
12
|
+
serverManager.addListener('onServerListening', ({ url, port, hostName }) => {
|
|
13
|
+
console.log(`Server listening at ${url}`)
|
|
14
|
+
})
|
|
15
|
+
|
|
16
|
+
serverManager.addListener('onServerClosed', ({ url }) => {
|
|
17
|
+
console.log(`Server at ${url} closed`)
|
|
18
|
+
})
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### Authentication events in `HttpUserContext`
|
|
22
|
+
|
|
23
|
+
`HttpUserContext` now extends `EventHub` and emits `onLogin`, `onLogout`, and `onSessionInvalidated` events for authentication lifecycle observability.
|
|
24
|
+
|
|
25
|
+
### `onListenerError` support
|
|
26
|
+
|
|
27
|
+
`ServerManager`, `ProxyManager`, and `HttpUserContext` event maps now include `onListenerError` for consistent listener error handling.
|
|
28
|
+
|
|
29
|
+
### ๐ Bug Fixes
|
|
30
|
+
|
|
31
|
+
- `ApiManager` now catches `URIError` from malformed percent-encoded URL path parameters and responds with a 400 error instead of crashing
|
|
32
|
+
|
|
33
|
+
### ๐งช Tests
|
|
34
|
+
|
|
35
|
+
- Added integration tests for 400 responses on malformed query parameter values and malformed percent-encoded path parameters
|
|
36
|
+
|
|
37
|
+
## [12.1.1] - 2026-02-27
|
|
38
|
+
|
|
39
|
+
### ๐ Bug Fixes
|
|
40
|
+
|
|
41
|
+
- Fixed `HttpAuthenticationSettings` not respecting its `TUser` and `TSession` generic type parameters when resolving data sets. `getUserDataSet` now uses the configurable `model` property instead of the hardcoded `User` class, and `getSessionDataSet` now uses the new `sessionModel` property instead of the hardcoded `DefaultSession` class. This allows custom user and session types to work correctly with `useHttpAuthentication`.
|
|
42
|
+
|
|
3
43
|
## [12.1.0] - 2026-02-26
|
|
4
44
|
|
|
5
45
|
### ๐ง Chores
|
package/esm/api-manager.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-manager.d.ts","sourceRoot":"","sources":["../src/api-manager.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"api-manager.d.ts","sourceRoot":"","sources":["../src/api-manager.ts"],"names":[],"mappings":"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"}
|
package/esm/api-manager.js
CHANGED
|
@@ -9,7 +9,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
9
9
|
};
|
|
10
10
|
import { IdentityContext } from '@furystack/core';
|
|
11
11
|
import { Injectable, Injected } from '@furystack/inject';
|
|
12
|
-
import { deserializeQueryString } from '@furystack/rest';
|
|
12
|
+
import { RequestError, deserializeQueryString } from '@furystack/rest';
|
|
13
13
|
import { PathHelper, usingAsync } from '@furystack/utils';
|
|
14
14
|
import { match } from 'path-to-regexp';
|
|
15
15
|
import { ErrorAction } from './actions/error-action.js';
|
|
@@ -145,7 +145,21 @@ let ApiManager = class ApiManager {
|
|
|
145
145
|
options.res.end();
|
|
146
146
|
return;
|
|
147
147
|
}
|
|
148
|
-
|
|
148
|
+
let action;
|
|
149
|
+
try {
|
|
150
|
+
action = this.getActionFromEndpoint(options.compiledApi, fullUrl, options.req.method?.toUpperCase());
|
|
151
|
+
}
|
|
152
|
+
catch (error) {
|
|
153
|
+
const responseError = error instanceof URIError ? new RequestError('Failed to decode URL path parameter', 400) : error;
|
|
154
|
+
const errorActionResult = await ErrorAction({
|
|
155
|
+
request: options.req,
|
|
156
|
+
response: options.res,
|
|
157
|
+
injector: options.injector,
|
|
158
|
+
getBody: async () => responseError,
|
|
159
|
+
});
|
|
160
|
+
options.res.sendActionResult(errorActionResult);
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
149
163
|
if (action) {
|
|
150
164
|
await this.executeAction({ ...options, ...action, fullUrl });
|
|
151
165
|
}
|
package/esm/api-manager.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-manager.js","sourceRoot":"","sources":["../src/api-manager.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEjD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAExD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"api-manager.js","sourceRoot":"","sources":["../src/api-manager.ts"],"names":[],"mappings":"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"}
|
package/esm/helpers.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAE3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAI9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAM3D,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAA;AAC9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAGrE;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAU,CAAC,SAAS,OAAO,EAAE,KAAK,mBAAmB,CAAC,CAAC,CAAC;;;EACpB,CAAA;AAE/D;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,GAAI,KAAK,SAAS,IAAI,EAAE,QAAQ,SAAS,cAAc,EACvF,UAAU,QAAQ,EAClB,WAAW,OAAO,CAAC,0BAA0B,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAE3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAI9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAM3D,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAA;AAC9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAGrE;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAU,CAAC,SAAS,OAAO,EAAE,KAAK,mBAAmB,CAAC,CAAC,CAAC;;;EACpB,CAAA;AAE/D;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,GAAI,KAAK,SAAS,IAAI,EAAE,QAAQ,SAAS,cAAc,EACvF,UAAU,QAAQ,EAClB,WAAW,OAAO,CAAC,0BAA0B,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,SAiChE,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GAAI,SAAS;IAAE,QAAQ,EAAE,QAAQ,CAAA;CAAE,GAAG,mBAAmB,kBAGnF,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+DG;AACH,eAAO,MAAM,QAAQ,GAAI,SAAS;IAAE,QAAQ,EAAE,QAAQ,CAAA;CAAE,GAAG,YAAY,kBAGtE,CAAA"}
|
package/esm/helpers.js
CHANGED
|
@@ -27,8 +27,6 @@ export const useHttpAuthentication = (injector, settings) => {
|
|
|
27
27
|
const systemInjector = useSystemIdentityContext({ injector, username: 'useHttpAuthentication' });
|
|
28
28
|
const passwordAuthenticator = injector.getInstance(PasswordAuthenticator);
|
|
29
29
|
const userDataSet = mergedSettings.getUserDataSet(systemInjector);
|
|
30
|
-
// Narrow from DataSet<TSession, keyof TSession> to DataSet<DefaultSession, 'sessionId'>
|
|
31
|
-
// because the built-in providers operate on DefaultSession with the concrete 'sessionId' key
|
|
32
30
|
const sessionDataSet = mergedSettings.getSessionDataSet(systemInjector);
|
|
33
31
|
const providers = [];
|
|
34
32
|
if (mergedSettings.enableBasicAuth) {
|
package/esm/helpers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAA;AAI1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAG3D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,mDAAmD,CAAA;AAC3F,OAAO,EAAE,wBAAwB,EAAE,MAAM,oDAAoD,CAAA;AAC7F,OAAO,EAAE,2BAA2B,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAA;AACpH,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAA;AAG9E,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAEhE;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAqB,GAA2B,EAAE,EAAE,CACrF,MAAM,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAA;AAE/D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,QAAkB,EAClB,QAA+D,EAC/D,EAAE;IACF,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,0BAA0B,EAAmB,EAAE,QAAQ,CAAC,CAAA;IACjG,MAAM,cAAc,GAAG,wBAAwB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,uBAAuB,EAAE,CAAC,CAAA;IAChG,MAAM,qBAAqB,GAAG,QAAQ,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAA;IACzE,MAAM,WAAW,GAAG,cAAc,CAAC,cAAc,CAAC,cAAc,
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { User } from '@furystack/core';
|
|
2
2
|
import type { Constructable, Injector } from '@furystack/inject';
|
|
3
|
-
import type { DataSet } from '@furystack/repository';
|
|
4
3
|
import type { AuthenticationProvider } from './authentication-providers/authentication-provider.js';
|
|
5
4
|
import { DefaultSession } from './models/default-session.js';
|
|
6
5
|
/**
|
|
@@ -8,8 +7,9 @@ import { DefaultSession } from './models/default-session.js';
|
|
|
8
7
|
*/
|
|
9
8
|
export declare class HttpAuthenticationSettings<TUser extends User, TSession extends DefaultSession> {
|
|
10
9
|
model: Constructable<TUser>;
|
|
11
|
-
getUserDataSet: (injector: Injector) => DataSet<
|
|
12
|
-
|
|
10
|
+
getUserDataSet: (injector: Injector) => import("@furystack/repository").DataSet<TUser, "username" & keyof TUser, import("@furystack/core").WithOptionalId<TUser, "username" & keyof TUser>>;
|
|
11
|
+
sessionModel: Constructable<TSession>;
|
|
12
|
+
getSessionDataSet: (injector: Injector) => import("@furystack/repository").DataSet<TSession, "sessionId" & keyof TSession, import("@furystack/core").WithOptionalId<TSession, "sessionId" & keyof TSession>>;
|
|
13
13
|
cookieName: string;
|
|
14
14
|
enableBasicAuth: boolean;
|
|
15
15
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-authentication-settings.d.ts","sourceRoot":"","sources":["../src/http-authentication-settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AACtC,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"http-authentication-settings.d.ts","sourceRoot":"","sources":["../src/http-authentication-settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AACtC,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAGhE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uDAAuD,CAAA;AACnG,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAE5D;;GAEG;AACH,qBACa,0BAA0B,CAAC,KAAK,SAAS,IAAI,EAAE,QAAQ,SAAS,cAAc;IAClF,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAA+B;IAE1D,cAAc,GAAI,UAAU,QAAQ,yJACkC;IAEtE,YAAY,EAAE,aAAa,CAAC,QAAQ,CAAC,CAA4C;IAEjF,iBAAiB,GAAI,UAAU,QAAQ,uKAC2C;IAElF,UAAU,SAAQ;IAClB,eAAe,UAAO;IAE7B;;;;OAIG;IACI,uBAAuB,EAAE,sBAAsB,EAAE,CAAK;CAC9D"}
|
|
@@ -13,8 +13,9 @@ import { DefaultSession } from './models/default-session.js';
|
|
|
13
13
|
*/
|
|
14
14
|
let HttpAuthenticationSettings = class HttpAuthenticationSettings {
|
|
15
15
|
model = User;
|
|
16
|
-
getUserDataSet = (injector) => getDataSetFor(injector,
|
|
17
|
-
|
|
16
|
+
getUserDataSet = (injector) => getDataSetFor(injector, this.model, 'username');
|
|
17
|
+
sessionModel = DefaultSession;
|
|
18
|
+
getSessionDataSet = (injector) => getDataSetFor(injector, this.sessionModel, 'sessionId');
|
|
18
19
|
cookieName = 'fss';
|
|
19
20
|
enableBasicAuth = true;
|
|
20
21
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-authentication-settings.js","sourceRoot":"","sources":["../src/http-authentication-settings.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"http-authentication-settings.js","sourceRoot":"","sources":["../src/http-authentication-settings.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAE5D;;GAEG;AAEI,IAAM,0BAA0B,GAAhC,MAAM,0BAA0B;IAC9B,KAAK,GAAyB,IAA4B,CAAA;IAE1D,cAAc,GAAG,CAAC,QAAkB,EAAE,EAAE,CAC7C,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,UAAsC,CAAC,CAAA;IAEtE,YAAY,GAA4B,cAAyC,CAAA;IAEjF,iBAAiB,GAAG,CAAC,QAAkB,EAAE,EAAE,CAChD,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,WAA2C,CAAC,CAAA;IAElF,UAAU,GAAG,KAAK,CAAA;IAClB,eAAe,GAAG,IAAI,CAAA;IAE7B;;;;OAIG;IACI,uBAAuB,GAA6B,EAAE,CAAA;CAC9D,CAAA;AApBY,0BAA0B;IADtC,UAAU,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;GACzB,0BAA0B,CAoBtC"}
|
|
@@ -1,13 +1,25 @@
|
|
|
1
1
|
import type { User } from '@furystack/core';
|
|
2
|
+
import { EventHub, type ListenerErrorPayload } from '@furystack/utils';
|
|
2
3
|
import type { IncomingMessage } from 'http';
|
|
3
4
|
import { HttpAuthenticationSettings } from './http-authentication-settings.js';
|
|
4
5
|
import type { DefaultSession } from './models/default-session.js';
|
|
6
|
+
/**
|
|
7
|
+
* Events emitted by the {@link HttpUserContext}
|
|
8
|
+
*/
|
|
9
|
+
export type HttpUserContextEvents = {
|
|
10
|
+
onLogin: {
|
|
11
|
+
user: User;
|
|
12
|
+
};
|
|
13
|
+
onLogout: undefined;
|
|
14
|
+
onSessionInvalidated: undefined;
|
|
15
|
+
onListenerError: ListenerErrorPayload;
|
|
16
|
+
};
|
|
5
17
|
/**
|
|
6
18
|
* Injectable UserContext for FuryStack HTTP Api
|
|
7
19
|
*/
|
|
8
|
-
export declare class HttpUserContext {
|
|
20
|
+
export declare class HttpUserContext extends EventHub<HttpUserContextEvents> {
|
|
9
21
|
getUserDataSet: () => import("@furystack/repository").DataSet<User, "username", import("@furystack/core").WithOptionalId<User, "username">>;
|
|
10
|
-
getSessionDataSet: () => import("@furystack/repository").DataSet<DefaultSession,
|
|
22
|
+
getSessionDataSet: () => import("@furystack/repository").DataSet<DefaultSession, "sessionId", import("@furystack/core").WithOptionalId<DefaultSession, "sessionId">>;
|
|
11
23
|
private getUserByName;
|
|
12
24
|
private user?;
|
|
13
25
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-user-context.d.ts","sourceRoot":"","sources":["../src/http-user-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"http-user-context.d.ts","sourceRoot":"","sources":["../src/http-user-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAK3C,OAAO,EAAE,QAAQ,EAAE,KAAK,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAEtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,MAAM,CAAA;AAE3C,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAA;AAC9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAEjE;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,CAAA;IACvB,QAAQ,EAAE,SAAS,CAAA;IACnB,oBAAoB,EAAE,SAAS,CAAA;IAC/B,eAAe,EAAE,oBAAoB,CAAA;CACtC,CAAA;AAED;;GAEG;AACH,qBACa,eAAgB,SAAQ,QAAQ,CAAC,qBAAqB,CAAC;IAC3D,cAAc,8HAAgE;IAE9E,iBAAiB,oJAAmE;IAE3F,OAAO,CAAC,aAAa,CAOpB;IAED,OAAO,CAAC,IAAI,CAAC,CAAM;IAEnB;;;OAGG;IACU,eAAe,CAAC,OAAO,EAAE,eAAe;IASrD;;;;;OAKG;IACU,YAAY,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAUzF;;;;;OAKG;IACU,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAanD,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC;IAQ9D,uBAAuB,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,GAAG,MAAM,GAAG,IAAI;IAIxF;;;;;OAKG;IACU,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ1F;;;;;OAKG;IACU,WAAW,CACtB,IAAI,EAAE,IAAI,EACV,cAAc,EAAE;QAAE,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,GACrE,OAAO,CAAC,IAAI,CAAC;IASH,YAAY,CACvB,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,EACzC,QAAQ,EAAE;QAAE,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE;IAclE,SACwB,cAAc,EAAE,0BAA0B,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;IAExF,iBACyB,cAAc,CAAU;IAEjD,iBACyB,aAAa,CAAuB;IAEtD,IAAI;CAmBZ"}
|
package/esm/http-user-context.js
CHANGED
|
@@ -10,13 +10,14 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
10
10
|
import { useSystemIdentityContext } from '@furystack/core';
|
|
11
11
|
import { Injectable, Injected } from '@furystack/inject';
|
|
12
12
|
import { PasswordAuthenticator, UnauthenticatedError } from '@furystack/security';
|
|
13
|
+
import { EventHub } from '@furystack/utils';
|
|
13
14
|
import { randomBytes } from 'crypto';
|
|
14
15
|
import { extractSessionIdFromCookies } from './authentication-providers/helpers.js';
|
|
15
16
|
import { HttpAuthenticationSettings } from './http-authentication-settings.js';
|
|
16
17
|
/**
|
|
17
18
|
* Injectable UserContext for FuryStack HTTP Api
|
|
18
19
|
*/
|
|
19
|
-
let HttpUserContext = class HttpUserContext {
|
|
20
|
+
let HttpUserContext = class HttpUserContext extends EventHub {
|
|
20
21
|
getUserDataSet = () => this.authentication.getUserDataSet(this.systemInjector);
|
|
21
22
|
getSessionDataSet = () => this.authentication.getSessionDataSet(this.systemInjector);
|
|
22
23
|
getUserByName = async (userName) => {
|
|
@@ -108,6 +109,7 @@ let HttpUserContext = class HttpUserContext {
|
|
|
108
109
|
await this.getSessionDataSet().add(this.systemInjector, { sessionId, username: user.username });
|
|
109
110
|
serverResponse.setHeader('Set-Cookie', `${this.authentication.cookieName}=${sessionId}; Path=/; HttpOnly`);
|
|
110
111
|
this.user = user;
|
|
112
|
+
this.emit('onLogin', { user });
|
|
111
113
|
return user;
|
|
112
114
|
}
|
|
113
115
|
async cookieLogout(request, response) {
|
|
@@ -119,6 +121,7 @@ let HttpUserContext = class HttpUserContext {
|
|
|
119
121
|
const sessions = await sessionDataSet.find(this.systemInjector, { filter: { sessionId: { $eq: sessionId } } });
|
|
120
122
|
await sessionDataSet.remove(this.systemInjector, ...sessions.map((s) => s[sessionDataSet.primaryKey]));
|
|
121
123
|
}
|
|
124
|
+
this.emit('onLogout', undefined);
|
|
122
125
|
}
|
|
123
126
|
init() {
|
|
124
127
|
this.getUserDataSet().addListener('onEntityUpdated', ({ id, change }) => {
|
|
@@ -129,10 +132,12 @@ let HttpUserContext = class HttpUserContext {
|
|
|
129
132
|
this.getUserDataSet().addListener('onEntityRemoved', ({ key }) => {
|
|
130
133
|
if (this.user?.username === key) {
|
|
131
134
|
this.user = undefined;
|
|
135
|
+
this.emit('onSessionInvalidated', undefined);
|
|
132
136
|
}
|
|
133
137
|
});
|
|
134
138
|
this.getSessionDataSet().addListener('onEntityRemoved', () => {
|
|
135
139
|
this.user = undefined;
|
|
140
|
+
this.emit('onSessionInvalidated', undefined);
|
|
136
141
|
});
|
|
137
142
|
}
|
|
138
143
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-user-context.js","sourceRoot":"","sources":["../src/http-user-context.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAA;AAE1D,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AACjF,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AAEpC,OAAO,EAAE,2BAA2B,EAAE,MAAM,uCAAuC,CAAA;AACnF,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAA;
|
|
1
|
+
{"version":3,"file":"http-user-context.js","sourceRoot":"","sources":["../src/http-user-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -320,6 +320,81 @@ describe('HttpUserContext', () => {
|
|
|
320
320
|
});
|
|
321
321
|
});
|
|
322
322
|
});
|
|
323
|
+
describe('EventHub events', () => {
|
|
324
|
+
it('Should emit onLogin when cookieLogin succeeds', async () => {
|
|
325
|
+
await usingAsync(new Injector(), async (i) => {
|
|
326
|
+
await prepareInjector(i);
|
|
327
|
+
const ctx = i.getInstance(HttpUserContext);
|
|
328
|
+
const handler = vi.fn();
|
|
329
|
+
ctx.addListener('onLogin', handler);
|
|
330
|
+
const addMock = vi.fn(async () => ({}));
|
|
331
|
+
// @ts-expect-error
|
|
332
|
+
ctx.getSessionDataSet = vi.fn(() => ({ add: addMock }));
|
|
333
|
+
await ctx.cookieLogin(testUser, { setHeader: vi.fn() });
|
|
334
|
+
expect(handler).toHaveBeenCalledTimes(1);
|
|
335
|
+
expect(handler).toHaveBeenCalledWith({ user: testUser });
|
|
336
|
+
});
|
|
337
|
+
});
|
|
338
|
+
it('Should emit onLogout when cookieLogout is called', async () => {
|
|
339
|
+
await usingAsync(new Injector(), async (i) => {
|
|
340
|
+
await prepareInjector(i);
|
|
341
|
+
const ctx = i.getInstance(HttpUserContext);
|
|
342
|
+
const handler = vi.fn();
|
|
343
|
+
ctx.addListener('onLogout', handler);
|
|
344
|
+
const sessionDataSetMock = {
|
|
345
|
+
add: vi.fn(async () => ({})),
|
|
346
|
+
find: vi.fn(async () => [{ sessionId: 'sid' }]),
|
|
347
|
+
remove: vi.fn(async () => undefined),
|
|
348
|
+
primaryKey: 'sessionId',
|
|
349
|
+
};
|
|
350
|
+
// @ts-expect-error
|
|
351
|
+
ctx.getSessionDataSet = vi.fn(() => sessionDataSetMock);
|
|
352
|
+
ctx.getSessionIdFromRequest = () => 'sid';
|
|
353
|
+
await ctx.cookieLogout(request, { setHeader: vi.fn() });
|
|
354
|
+
expect(handler).toHaveBeenCalledTimes(1);
|
|
355
|
+
expect(handler).toHaveBeenCalledWith(undefined);
|
|
356
|
+
});
|
|
357
|
+
});
|
|
358
|
+
it('Should emit onSessionInvalidated when the user entity is removed', async () => {
|
|
359
|
+
await usingAsync(new Injector(), async (i) => {
|
|
360
|
+
await prepareInjector(i);
|
|
361
|
+
const ctx = i.getInstance(HttpUserContext);
|
|
362
|
+
const sm = i.getInstance(StoreManager);
|
|
363
|
+
await sm.getStoreFor(User, 'username').add(testUser);
|
|
364
|
+
const pw = await i.getInstance(PasswordAuthenticator).hasher.createCredential(testUser.username, 'test');
|
|
365
|
+
await sm.getStoreFor(PasswordCredential, 'userName').add(pw);
|
|
366
|
+
const handler = vi.fn();
|
|
367
|
+
ctx.addListener('onSessionInvalidated', handler);
|
|
368
|
+
await ctx.cookieLogin(testUser, { setHeader: vi.fn() });
|
|
369
|
+
const systemInjector = useSystemIdentityContext({ injector: i, username: 'test' });
|
|
370
|
+
const userDataSet = getDataSetFor(systemInjector, User, 'username');
|
|
371
|
+
await userDataSet.remove(systemInjector, testUser.username);
|
|
372
|
+
expect(handler).toHaveBeenCalledTimes(1);
|
|
373
|
+
});
|
|
374
|
+
});
|
|
375
|
+
it('Should emit onSessionInvalidated when the session entity is removed', async () => {
|
|
376
|
+
await usingAsync(new Injector(), async (i) => {
|
|
377
|
+
await prepareInjector(i);
|
|
378
|
+
const ctx = i.getInstance(HttpUserContext);
|
|
379
|
+
const sm = i.getInstance(StoreManager);
|
|
380
|
+
await sm.getStoreFor(User, 'username').add(testUser);
|
|
381
|
+
const pw = await i.getInstance(PasswordAuthenticator).hasher.createCredential(testUser.username, 'test');
|
|
382
|
+
await sm.getStoreFor(PasswordCredential, 'userName').add(pw);
|
|
383
|
+
const handler = vi.fn();
|
|
384
|
+
ctx.addListener('onSessionInvalidated', handler);
|
|
385
|
+
let sessionId = '';
|
|
386
|
+
await ctx.cookieLogin(testUser, {
|
|
387
|
+
setHeader: (_headerName, headerValue) => {
|
|
388
|
+
sessionId = headerValue.split('=')[1].split(';')[0];
|
|
389
|
+
},
|
|
390
|
+
});
|
|
391
|
+
const systemInjector = useSystemIdentityContext({ injector: i, username: 'test' });
|
|
392
|
+
const sessionDataSet = getDataSetFor(systemInjector, DefaultSession, 'sessionId');
|
|
393
|
+
await sessionDataSet.remove(systemInjector, sessionId);
|
|
394
|
+
expect(handler).toHaveBeenCalledTimes(1);
|
|
395
|
+
});
|
|
396
|
+
});
|
|
397
|
+
});
|
|
323
398
|
describe('Changes in the store during the context lifetime', () => {
|
|
324
399
|
it('Should update user roles', () => {
|
|
325
400
|
return usingAsync(new Injector(), async (i) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-user-context.spec.js","sourceRoot":"","sources":["../src/http-user-context.spec.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"http-user-context.spec.js","sourceRoot":"","sources":["../src/http-user-context.spec.ts"],"names":[],"mappings":"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"}
|
package/esm/proxy-manager.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EventHub } from '@furystack/utils';
|
|
1
|
+
import { EventHub, type ListenerErrorPayload } from '@furystack/utils';
|
|
2
2
|
import type { IncomingMessage, OutgoingHttpHeaders } from 'http';
|
|
3
3
|
export interface ProxyOptions {
|
|
4
4
|
sourceBaseUrl: string;
|
|
@@ -26,6 +26,7 @@ export declare class ProxyManager extends EventHub<{
|
|
|
26
26
|
to: string;
|
|
27
27
|
error: unknown;
|
|
28
28
|
};
|
|
29
|
+
onListenerError: ListenerErrorPayload;
|
|
29
30
|
}> {
|
|
30
31
|
private readonly serverManager;
|
|
31
32
|
private readonly pathProcessor;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy-manager.d.ts","sourceRoot":"","sources":["../src/proxy-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAc,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"proxy-manager.d.ts","sourceRoot":"","sources":["../src/proxy-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAc,KAAK,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAClF,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAkB,MAAM,MAAM,CAAA;AAOhF,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAA;IAC5C,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,CAAC,eAAe,EAAE,mBAAmB,KAAK,mBAAmB,CAAA;IACvE,OAAO,CAAC,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,KAAK,MAAM,EAAE,CAAA;IACjD,eAAe,CAAC,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,KAAK,MAAM,EAAE,CAAA;IACzD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED;;GAEG;AACH,qBACa,YAAa,SAAQ,QAAQ,CAAC;IACzC,aAAa,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAA;IAC3D,sBAAsB,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAA;IACpE,eAAe,EAAE,oBAAoB,CAAA;CACtC,CAAC;IACA,iBACyB,aAAa,CAAe;IAErD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAsB;IAEpD;;OAEG;IACI,UAAU,GACd,eAAe,MAAM,MACrB,SAAS;QAAE,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,KAAK,GAAG,QAAQ,CAAC,CAAA;KAAE,aACW;IAEvE;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAiB5B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAe5B;;;OAGG;IACU,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;CAe5D"}
|
package/esm/proxy-manager.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy-manager.js","sourceRoot":"","sources":["../src/proxy-manager.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,QAAQ,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"proxy-manager.js","sourceRoot":"","sources":["../src/proxy-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,11 +4,12 @@ import { Injector } from '@furystack/inject';
|
|
|
4
4
|
import { getRepository } from '@furystack/repository';
|
|
5
5
|
import { serializeValue } from '@furystack/rest';
|
|
6
6
|
import { PathHelper, usingAsync } from '@furystack/utils';
|
|
7
|
-
import { describe, expect, it } from 'vitest';
|
|
7
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
8
8
|
import { GetCurrentUser, IsAuthenticated, LoginAction, LogoutAction } from './actions/index.js';
|
|
9
9
|
import './helpers';
|
|
10
10
|
import { useHttpAuthentication, useRestService } from './helpers.js';
|
|
11
11
|
import { DefaultSession } from './models/default-session.js';
|
|
12
|
+
import { ServerManager } from './server-manager.js';
|
|
12
13
|
import { JsonResult } from './request-action-implementation.js';
|
|
13
14
|
const createIntegrationApi = async () => {
|
|
14
15
|
const i = new Injector();
|
|
@@ -137,5 +138,75 @@ describe('@furystack/rest-service inregration tests', () => {
|
|
|
137
138
|
await expect(fetch(PathHelper.joinPaths(`http://127.0.0.1:${port}`, 'not-my-api-root'))).rejects.toThrowError('fetch failed');
|
|
138
139
|
});
|
|
139
140
|
});
|
|
141
|
+
it('Should respond with 400 for malformed query parameter values', async () => {
|
|
142
|
+
await usingAsync(await createIntegrationApi(), async ({ apiUrl }) => {
|
|
143
|
+
const response = await fetch(PathHelper.joinPaths(apiUrl, 'testQuery?param1=not-valid-base64!!!'));
|
|
144
|
+
expect(response.status).toBe(400);
|
|
145
|
+
const result = (await response.json());
|
|
146
|
+
expect(result.message).toBe('Failed to decode query parameter value');
|
|
147
|
+
});
|
|
148
|
+
});
|
|
149
|
+
it('Should respond with 400 for malformed percent-encoded path parameters', async () => {
|
|
150
|
+
await usingAsync(await createIntegrationApi(), async ({ apiUrl }) => {
|
|
151
|
+
const response = await fetch(`${apiUrl}/testUrlParams/%E0%A4%A`);
|
|
152
|
+
expect(response.status).toBe(400);
|
|
153
|
+
const result = (await response.json());
|
|
154
|
+
expect(result.message).toBe('Failed to decode URL path parameter');
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
});
|
|
158
|
+
describe('ServerManager events', () => {
|
|
159
|
+
it('Should emit onServerListening when a server is created', async () => {
|
|
160
|
+
await usingAsync(new Injector(), async (i) => {
|
|
161
|
+
const serverManager = i.getInstance(ServerManager);
|
|
162
|
+
const handler = vi.fn();
|
|
163
|
+
serverManager.addListener('onServerListening', handler);
|
|
164
|
+
const port = getPort();
|
|
165
|
+
await serverManager.getOrCreate({ port });
|
|
166
|
+
expect(handler).toHaveBeenCalledTimes(1);
|
|
167
|
+
expect(handler).toHaveBeenCalledWith({
|
|
168
|
+
url: `http://localhost:${port}`,
|
|
169
|
+
port,
|
|
170
|
+
hostName: undefined,
|
|
171
|
+
});
|
|
172
|
+
});
|
|
173
|
+
});
|
|
174
|
+
it('Should emit onServerListening with hostName when provided', async () => {
|
|
175
|
+
await usingAsync(new Injector(), async (i) => {
|
|
176
|
+
const serverManager = i.getInstance(ServerManager);
|
|
177
|
+
const handler = vi.fn();
|
|
178
|
+
serverManager.addListener('onServerListening', handler);
|
|
179
|
+
const port = getPort();
|
|
180
|
+
await serverManager.getOrCreate({ port, hostName: '127.0.0.1' });
|
|
181
|
+
expect(handler).toHaveBeenCalledWith({
|
|
182
|
+
url: `http://127.0.0.1:${port}`,
|
|
183
|
+
port,
|
|
184
|
+
hostName: '127.0.0.1',
|
|
185
|
+
});
|
|
186
|
+
});
|
|
187
|
+
});
|
|
188
|
+
it('Should emit onServerClosed when the server manager is disposed', async () => {
|
|
189
|
+
await usingAsync(new Injector(), async (i) => {
|
|
190
|
+
const serverManager = i.getInstance(ServerManager);
|
|
191
|
+
const handler = vi.fn();
|
|
192
|
+
serverManager.addListener('onServerClosed', handler);
|
|
193
|
+
const port = getPort();
|
|
194
|
+
await serverManager.getOrCreate({ port });
|
|
195
|
+
await serverManager[Symbol.asyncDispose]();
|
|
196
|
+
expect(handler).toHaveBeenCalledTimes(1);
|
|
197
|
+
expect(handler).toHaveBeenCalledWith({ url: `http://localhost:${port}` });
|
|
198
|
+
});
|
|
199
|
+
});
|
|
200
|
+
it('Should not emit onServerListening for an existing server', async () => {
|
|
201
|
+
await usingAsync(new Injector(), async (i) => {
|
|
202
|
+
const serverManager = i.getInstance(ServerManager);
|
|
203
|
+
const port = getPort();
|
|
204
|
+
await serverManager.getOrCreate({ port });
|
|
205
|
+
const handler = vi.fn();
|
|
206
|
+
serverManager.addListener('onServerListening', handler);
|
|
207
|
+
await serverManager.getOrCreate({ port });
|
|
208
|
+
expect(handler).not.toHaveBeenCalled();
|
|
209
|
+
});
|
|
210
|
+
});
|
|
140
211
|
});
|
|
141
212
|
//# sourceMappingURL=rest-service.integration.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rest-service.integration.spec.js","sourceRoot":"","sources":["../src/rest-service.integration.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"rest-service.integration.spec.js","sourceRoot":"","sources":["../src/rest-service.integration.spec.ts"],"names":[],"mappings":"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"}
|
package/esm/server-manager.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EventHub } from '@furystack/utils';
|
|
1
|
+
import { EventHub, type ListenerErrorPayload } from '@furystack/utils';
|
|
2
2
|
import type { IncomingMessage, Server, ServerResponse } from 'http';
|
|
3
3
|
import type { Duplex } from 'stream';
|
|
4
4
|
export interface ServerOptions {
|
|
@@ -25,6 +25,15 @@ export interface ServerRecord {
|
|
|
25
25
|
}
|
|
26
26
|
export declare class ServerManager extends EventHub<{
|
|
27
27
|
onRequestFailed: [unknown, IncomingMessage, ServerResponse<IncomingMessage>];
|
|
28
|
+
onServerListening: {
|
|
29
|
+
url: string;
|
|
30
|
+
port: number;
|
|
31
|
+
hostName?: string;
|
|
32
|
+
};
|
|
33
|
+
onServerClosed: {
|
|
34
|
+
url: string;
|
|
35
|
+
};
|
|
36
|
+
onListenerError: ListenerErrorPayload;
|
|
28
37
|
}> implements AsyncDisposable {
|
|
29
38
|
static DEFAULT_HOST: string;
|
|
30
39
|
servers: Map<string, ServerRecord>;
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"server-manager.d.ts","sourceRoot":"","sources":["../src/server-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,KAAK,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,MAAM,CAAA;AAGnE,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;IACf,eAAe,EAAE,CAAC,OAAO,EAAE,eAAe,EAAE,cAAc,CAAC,eAAe,CAAC,CAAC,CAAA;IAC5E,iBAAiB,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACnE,cAAc,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;IAC/B,eAAe,EAAE,oBAAoB,CAAA;CACtC,CACD,YAAW,eAAe;IAE1B,OAAc,YAAY,SAAc;IACjC,OAAO,4BAAkC;IAChD,OAAO,CAAC,aAAa,CAAoB;IACzC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA2C;IAC1E,OAAO,CAAC,UAAU,CAC0D;IAE5E,OAAO,CAAC,YAAY,CAGnB;IACY,CAAC,MAAM,CAAC,YAAY,CAAC;IAuBrB,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;YAkBzD,YAAY;CAsC3B"}
|
package/esm/server-manager.js
CHANGED
|
@@ -22,8 +22,16 @@ let ServerManager = class ServerManager extends EventHub {
|
|
|
22
22
|
async [Symbol.asyncDispose]() {
|
|
23
23
|
await Promise.allSettled([...this.pendingCreates.values()]);
|
|
24
24
|
this.openedSockets.forEach((s) => s.destroy());
|
|
25
|
-
await Promise.allSettled([...this.servers.
|
|
26
|
-
s.server.close((err) =>
|
|
25
|
+
await Promise.allSettled([...this.servers.entries()].map(([url, s]) => new Promise((resolve, reject) => {
|
|
26
|
+
s.server.close((err) => {
|
|
27
|
+
if (err) {
|
|
28
|
+
reject(err);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
this.emit('onServerClosed', { url });
|
|
32
|
+
resolve();
|
|
33
|
+
}
|
|
34
|
+
});
|
|
27
35
|
s.server.off('connection', this.onConnection);
|
|
28
36
|
})));
|
|
29
37
|
this.servers.clear();
|
|
@@ -77,6 +85,7 @@ let ServerManager = class ServerManager extends EventHub {
|
|
|
77
85
|
});
|
|
78
86
|
const record = { server, apis };
|
|
79
87
|
this.servers.set(url, record);
|
|
88
|
+
this.emit('onServerListening', { url, port: options.port, hostName: options.hostName });
|
|
80
89
|
return record;
|
|
81
90
|
}
|
|
82
91
|
finally {
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"server-manager.js","sourceRoot":"","sources":["../src/server-manager.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": "12.
|
|
3
|
+
"version": "12.2.0",
|
|
4
4
|
"description": "REST API service implementation for FuryStack",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
@@ -39,18 +39,18 @@
|
|
|
39
39
|
},
|
|
40
40
|
"homepage": "https://github.com/furystack/furystack",
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@furystack/core": "^15.2.
|
|
43
|
-
"@furystack/inject": "^12.0.
|
|
44
|
-
"@furystack/repository": "^10.1.
|
|
45
|
-
"@furystack/rest": "^8.0.
|
|
46
|
-
"@furystack/security": "^7.0.
|
|
47
|
-
"@furystack/utils": "^8.
|
|
42
|
+
"@furystack/core": "^15.2.3",
|
|
43
|
+
"@furystack/inject": "^12.0.31",
|
|
44
|
+
"@furystack/repository": "^10.1.4",
|
|
45
|
+
"@furystack/rest": "^8.0.41",
|
|
46
|
+
"@furystack/security": "^7.0.2",
|
|
47
|
+
"@furystack/utils": "^8.2.0",
|
|
48
48
|
"ajv": "^8.18.0",
|
|
49
49
|
"ajv-formats": "^3.0.1",
|
|
50
50
|
"path-to-regexp": "^8.3.0"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
|
-
"@furystack/rest-client-fetch": "^8.0
|
|
53
|
+
"@furystack/rest-client-fetch": "^8.1.0",
|
|
54
54
|
"@types/node": "^25.3.1",
|
|
55
55
|
"@types/ws": "^8.18.1",
|
|
56
56
|
"typescript": "^5.9.3",
|
package/src/api-manager.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { IdentityContext } from '@furystack/core'
|
|
|
3
3
|
import type { Injector } from '@furystack/inject'
|
|
4
4
|
import { Injectable, Injected } from '@furystack/inject'
|
|
5
5
|
import type { Method, RestApi } from '@furystack/rest'
|
|
6
|
-
import { deserializeQueryString } from '@furystack/rest'
|
|
6
|
+
import { RequestError, deserializeQueryString } from '@furystack/rest'
|
|
7
7
|
import { PathHelper, usingAsync } from '@furystack/utils'
|
|
8
8
|
import type { MatchFunction } from 'path-to-regexp'
|
|
9
9
|
import { match } from 'path-to-regexp'
|
|
@@ -274,7 +274,22 @@ export class ApiManager {
|
|
|
274
274
|
return
|
|
275
275
|
}
|
|
276
276
|
|
|
277
|
-
|
|
277
|
+
let action: ReturnType<typeof this.getActionFromEndpoint>
|
|
278
|
+
try {
|
|
279
|
+
action = this.getActionFromEndpoint(options.compiledApi, fullUrl, options.req.method?.toUpperCase() as Method)
|
|
280
|
+
} catch (error) {
|
|
281
|
+
const responseError =
|
|
282
|
+
error instanceof URIError ? new RequestError('Failed to decode URL path parameter', 400) : (error as Error)
|
|
283
|
+
const errorActionResult = await ErrorAction({
|
|
284
|
+
request: options.req,
|
|
285
|
+
response: options.res,
|
|
286
|
+
injector: options.injector,
|
|
287
|
+
getBody: async () => responseError,
|
|
288
|
+
})
|
|
289
|
+
options.res.sendActionResult(errorActionResult)
|
|
290
|
+
return
|
|
291
|
+
}
|
|
292
|
+
|
|
278
293
|
if (action) {
|
|
279
294
|
await this.executeAction({ ...options, ...action, fullUrl })
|
|
280
295
|
} else {
|
package/src/helpers.ts
CHANGED
|
@@ -42,9 +42,7 @@ export const useHttpAuthentication = <TUser extends User, TSession extends Defau
|
|
|
42
42
|
const mergedSettings = Object.assign(new HttpAuthenticationSettings<TUser, TSession>(), settings)
|
|
43
43
|
const systemInjector = useSystemIdentityContext({ injector, username: 'useHttpAuthentication' })
|
|
44
44
|
const passwordAuthenticator = injector.getInstance(PasswordAuthenticator)
|
|
45
|
-
const userDataSet = mergedSettings.getUserDataSet(systemInjector)
|
|
46
|
-
// Narrow from DataSet<TSession, keyof TSession> to DataSet<DefaultSession, 'sessionId'>
|
|
47
|
-
// because the built-in providers operate on DefaultSession with the concrete 'sessionId' key
|
|
45
|
+
const userDataSet = mergedSettings.getUserDataSet(systemInjector) as unknown as DataSet<User, 'username'>
|
|
48
46
|
const sessionDataSet = mergedSettings.getSessionDataSet(systemInjector) as unknown as DataSet<
|
|
49
47
|
DefaultSession,
|
|
50
48
|
'sessionId'
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { User } from '@furystack/core'
|
|
2
2
|
import type { Constructable, Injector } from '@furystack/inject'
|
|
3
3
|
import { Injectable } from '@furystack/inject'
|
|
4
|
-
import type { DataSet } from '@furystack/repository'
|
|
5
4
|
import { getDataSetFor } from '@furystack/repository'
|
|
6
5
|
import type { AuthenticationProvider } from './authentication-providers/authentication-provider.js'
|
|
7
6
|
import { DefaultSession } from './models/default-session.js'
|
|
@@ -13,10 +12,13 @@ import { DefaultSession } from './models/default-session.js'
|
|
|
13
12
|
export class HttpAuthenticationSettings<TUser extends User, TSession extends DefaultSession> {
|
|
14
13
|
public model: Constructable<TUser> = User as Constructable<TUser>
|
|
15
14
|
|
|
16
|
-
public getUserDataSet = (injector: Injector) =>
|
|
15
|
+
public getUserDataSet = (injector: Injector) =>
|
|
16
|
+
getDataSetFor(injector, this.model, 'username' as 'username' & keyof TUser)
|
|
17
17
|
|
|
18
|
-
public
|
|
19
|
-
|
|
18
|
+
public sessionModel: Constructable<TSession> = DefaultSession as Constructable<TSession>
|
|
19
|
+
|
|
20
|
+
public getSessionDataSet = (injector: Injector) =>
|
|
21
|
+
getDataSetFor(injector, this.sessionModel, 'sessionId' as 'sessionId' & keyof TSession)
|
|
20
22
|
|
|
21
23
|
public cookieName = 'fss'
|
|
22
24
|
public enableBasicAuth = true
|
|
@@ -377,6 +377,101 @@ describe('HttpUserContext', () => {
|
|
|
377
377
|
})
|
|
378
378
|
})
|
|
379
379
|
|
|
380
|
+
describe('EventHub events', () => {
|
|
381
|
+
it('Should emit onLogin when cookieLogin succeeds', async () => {
|
|
382
|
+
await usingAsync(new Injector(), async (i) => {
|
|
383
|
+
await prepareInjector(i)
|
|
384
|
+
const ctx = i.getInstance(HttpUserContext)
|
|
385
|
+
const handler = vi.fn()
|
|
386
|
+
ctx.addListener('onLogin', handler)
|
|
387
|
+
|
|
388
|
+
const addMock = vi.fn(async () => ({}))
|
|
389
|
+
// @ts-expect-error
|
|
390
|
+
ctx.getSessionDataSet = vi.fn(() => ({ add: addMock }))
|
|
391
|
+
|
|
392
|
+
await ctx.cookieLogin(testUser, { setHeader: vi.fn() })
|
|
393
|
+
|
|
394
|
+
expect(handler).toHaveBeenCalledTimes(1)
|
|
395
|
+
expect(handler).toHaveBeenCalledWith({ user: testUser })
|
|
396
|
+
})
|
|
397
|
+
})
|
|
398
|
+
|
|
399
|
+
it('Should emit onLogout when cookieLogout is called', async () => {
|
|
400
|
+
await usingAsync(new Injector(), async (i) => {
|
|
401
|
+
await prepareInjector(i)
|
|
402
|
+
const ctx = i.getInstance(HttpUserContext)
|
|
403
|
+
const handler = vi.fn()
|
|
404
|
+
ctx.addListener('onLogout', handler)
|
|
405
|
+
|
|
406
|
+
const sessionDataSetMock = {
|
|
407
|
+
add: vi.fn(async () => ({})),
|
|
408
|
+
find: vi.fn(async () => [{ sessionId: 'sid' }]),
|
|
409
|
+
remove: vi.fn(async () => undefined),
|
|
410
|
+
primaryKey: 'sessionId' as const,
|
|
411
|
+
}
|
|
412
|
+
// @ts-expect-error
|
|
413
|
+
ctx.getSessionDataSet = vi.fn(() => sessionDataSetMock)
|
|
414
|
+
ctx.getSessionIdFromRequest = () => 'sid'
|
|
415
|
+
|
|
416
|
+
await ctx.cookieLogout(request, { setHeader: vi.fn() })
|
|
417
|
+
|
|
418
|
+
expect(handler).toHaveBeenCalledTimes(1)
|
|
419
|
+
expect(handler).toHaveBeenCalledWith(undefined)
|
|
420
|
+
})
|
|
421
|
+
})
|
|
422
|
+
|
|
423
|
+
it('Should emit onSessionInvalidated when the user entity is removed', async () => {
|
|
424
|
+
await usingAsync(new Injector(), async (i) => {
|
|
425
|
+
await prepareInjector(i)
|
|
426
|
+
const ctx = i.getInstance(HttpUserContext)
|
|
427
|
+
const sm = i.getInstance(StoreManager)
|
|
428
|
+
await sm.getStoreFor(User, 'username').add(testUser)
|
|
429
|
+
|
|
430
|
+
const pw = await i.getInstance(PasswordAuthenticator).hasher.createCredential(testUser.username, 'test')
|
|
431
|
+
await sm.getStoreFor(PasswordCredential, 'userName').add(pw)
|
|
432
|
+
|
|
433
|
+
const handler = vi.fn()
|
|
434
|
+
ctx.addListener('onSessionInvalidated', handler)
|
|
435
|
+
|
|
436
|
+
await ctx.cookieLogin(testUser, { setHeader: vi.fn() })
|
|
437
|
+
|
|
438
|
+
const systemInjector = useSystemIdentityContext({ injector: i, username: 'test' })
|
|
439
|
+
const userDataSet = getDataSetFor(systemInjector, User, 'username')
|
|
440
|
+
await userDataSet.remove(systemInjector, testUser.username)
|
|
441
|
+
|
|
442
|
+
expect(handler).toHaveBeenCalledTimes(1)
|
|
443
|
+
})
|
|
444
|
+
})
|
|
445
|
+
|
|
446
|
+
it('Should emit onSessionInvalidated when the session entity is removed', async () => {
|
|
447
|
+
await usingAsync(new Injector(), async (i) => {
|
|
448
|
+
await prepareInjector(i)
|
|
449
|
+
const ctx = i.getInstance(HttpUserContext)
|
|
450
|
+
const sm = i.getInstance(StoreManager)
|
|
451
|
+
await sm.getStoreFor(User, 'username').add(testUser)
|
|
452
|
+
|
|
453
|
+
const pw = await i.getInstance(PasswordAuthenticator).hasher.createCredential(testUser.username, 'test')
|
|
454
|
+
await sm.getStoreFor(PasswordCredential, 'userName').add(pw)
|
|
455
|
+
|
|
456
|
+
const handler = vi.fn()
|
|
457
|
+
ctx.addListener('onSessionInvalidated', handler)
|
|
458
|
+
|
|
459
|
+
let sessionId = ''
|
|
460
|
+
await ctx.cookieLogin(testUser, {
|
|
461
|
+
setHeader: (_headerName, headerValue) => {
|
|
462
|
+
sessionId = headerValue.split('=')[1].split(';')[0]
|
|
463
|
+
},
|
|
464
|
+
})
|
|
465
|
+
|
|
466
|
+
const systemInjector = useSystemIdentityContext({ injector: i, username: 'test' })
|
|
467
|
+
const sessionDataSet = getDataSetFor(systemInjector, DefaultSession, 'sessionId')
|
|
468
|
+
await sessionDataSet.remove(systemInjector, sessionId)
|
|
469
|
+
|
|
470
|
+
expect(handler).toHaveBeenCalledTimes(1)
|
|
471
|
+
})
|
|
472
|
+
})
|
|
473
|
+
})
|
|
474
|
+
|
|
380
475
|
describe('Changes in the store during the context lifetime', () => {
|
|
381
476
|
it('Should update user roles', () => {
|
|
382
477
|
return usingAsync(new Injector(), async (i) => {
|
package/src/http-user-context.ts
CHANGED
|
@@ -3,17 +3,28 @@ import { useSystemIdentityContext } from '@furystack/core'
|
|
|
3
3
|
import type { Injector } from '@furystack/inject'
|
|
4
4
|
import { Injectable, Injected } from '@furystack/inject'
|
|
5
5
|
import { PasswordAuthenticator, UnauthenticatedError } from '@furystack/security'
|
|
6
|
+
import { EventHub, type ListenerErrorPayload } from '@furystack/utils'
|
|
6
7
|
import { randomBytes } from 'crypto'
|
|
7
8
|
import type { IncomingMessage } from 'http'
|
|
8
9
|
import { extractSessionIdFromCookies } from './authentication-providers/helpers.js'
|
|
9
10
|
import { HttpAuthenticationSettings } from './http-authentication-settings.js'
|
|
10
11
|
import type { DefaultSession } from './models/default-session.js'
|
|
11
12
|
|
|
13
|
+
/**
|
|
14
|
+
* Events emitted by the {@link HttpUserContext}
|
|
15
|
+
*/
|
|
16
|
+
export type HttpUserContextEvents = {
|
|
17
|
+
onLogin: { user: User }
|
|
18
|
+
onLogout: undefined
|
|
19
|
+
onSessionInvalidated: undefined
|
|
20
|
+
onListenerError: ListenerErrorPayload
|
|
21
|
+
}
|
|
22
|
+
|
|
12
23
|
/**
|
|
13
24
|
* Injectable UserContext for FuryStack HTTP Api
|
|
14
25
|
*/
|
|
15
26
|
@Injectable({ lifetime: 'scoped' })
|
|
16
|
-
export class HttpUserContext {
|
|
27
|
+
export class HttpUserContext extends EventHub<HttpUserContextEvents> {
|
|
17
28
|
public getUserDataSet = () => this.authentication.getUserDataSet(this.systemInjector)
|
|
18
29
|
|
|
19
30
|
public getSessionDataSet = () => this.authentication.getSessionDataSet(this.systemInjector)
|
|
@@ -117,6 +128,7 @@ export class HttpUserContext {
|
|
|
117
128
|
await this.getSessionDataSet().add(this.systemInjector, { sessionId, username: user.username })
|
|
118
129
|
serverResponse.setHeader('Set-Cookie', `${this.authentication.cookieName}=${sessionId}; Path=/; HttpOnly`)
|
|
119
130
|
this.user = user
|
|
131
|
+
this.emit('onLogin', { user })
|
|
120
132
|
return user
|
|
121
133
|
}
|
|
122
134
|
|
|
@@ -133,6 +145,7 @@ export class HttpUserContext {
|
|
|
133
145
|
const sessions = await sessionDataSet.find(this.systemInjector, { filter: { sessionId: { $eq: sessionId } } })
|
|
134
146
|
await sessionDataSet.remove(this.systemInjector, ...sessions.map((s) => s[sessionDataSet.primaryKey]))
|
|
135
147
|
}
|
|
148
|
+
this.emit('onLogout', undefined)
|
|
136
149
|
}
|
|
137
150
|
|
|
138
151
|
@Injected(HttpAuthenticationSettings)
|
|
@@ -154,11 +167,13 @@ export class HttpUserContext {
|
|
|
154
167
|
this.getUserDataSet().addListener('onEntityRemoved', ({ key }) => {
|
|
155
168
|
if (this.user?.username === key) {
|
|
156
169
|
this.user = undefined
|
|
170
|
+
this.emit('onSessionInvalidated', undefined)
|
|
157
171
|
}
|
|
158
172
|
})
|
|
159
173
|
|
|
160
174
|
this.getSessionDataSet().addListener('onEntityRemoved', () => {
|
|
161
175
|
this.user = undefined
|
|
176
|
+
this.emit('onSessionInvalidated', undefined)
|
|
162
177
|
})
|
|
163
178
|
}
|
|
164
179
|
}
|
package/src/proxy-manager.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Injectable, Injected } from '@furystack/inject'
|
|
2
|
-
import { EventHub, PathHelper } from '@furystack/utils'
|
|
2
|
+
import { EventHub, PathHelper, type ListenerErrorPayload } from '@furystack/utils'
|
|
3
3
|
import type { IncomingMessage, OutgoingHttpHeaders, ServerResponse } from 'http'
|
|
4
4
|
import type { Duplex } from 'stream'
|
|
5
5
|
import { HttpProxyHandler } from './http-proxy-handler.js'
|
|
@@ -27,6 +27,7 @@ export interface ProxyOptions {
|
|
|
27
27
|
export class ProxyManager extends EventHub<{
|
|
28
28
|
onProxyFailed: { from: string; to: string; error: unknown }
|
|
29
29
|
onWebSocketProxyFailed: { from: string; to: string; error: unknown }
|
|
30
|
+
onListenerError: ListenerErrorPayload
|
|
30
31
|
}> {
|
|
31
32
|
@Injected(ServerManager)
|
|
32
33
|
declare private readonly serverManager: ServerManager
|
|
@@ -5,11 +5,12 @@ import { getRepository } from '@furystack/repository'
|
|
|
5
5
|
import type { RestApi } from '@furystack/rest'
|
|
6
6
|
import { serializeValue } from '@furystack/rest'
|
|
7
7
|
import { PathHelper, usingAsync } from '@furystack/utils'
|
|
8
|
-
import { describe, expect, it } from 'vitest'
|
|
8
|
+
import { describe, expect, it, vi } from 'vitest'
|
|
9
9
|
import { GetCurrentUser, IsAuthenticated, LoginAction, LogoutAction } from './actions/index.js'
|
|
10
10
|
import './helpers'
|
|
11
11
|
import { useHttpAuthentication, useRestService } from './helpers.js'
|
|
12
12
|
import { DefaultSession } from './models/default-session.js'
|
|
13
|
+
import { ServerManager } from './server-manager.js'
|
|
13
14
|
import { JsonResult } from './request-action-implementation.js'
|
|
14
15
|
|
|
15
16
|
interface IntegrationTestApi extends RestApi {
|
|
@@ -169,4 +170,90 @@ describe('@furystack/rest-service inregration tests', () => {
|
|
|
169
170
|
)
|
|
170
171
|
})
|
|
171
172
|
})
|
|
173
|
+
|
|
174
|
+
it('Should respond with 400 for malformed query parameter values', async () => {
|
|
175
|
+
await usingAsync(await createIntegrationApi(), async ({ apiUrl }) => {
|
|
176
|
+
const response = await fetch(PathHelper.joinPaths(apiUrl, 'testQuery?param1=not-valid-base64!!!'))
|
|
177
|
+
expect(response.status).toBe(400)
|
|
178
|
+
const result = (await response.json()) as { message: string }
|
|
179
|
+
expect(result.message).toBe('Failed to decode query parameter value')
|
|
180
|
+
})
|
|
181
|
+
})
|
|
182
|
+
|
|
183
|
+
it('Should respond with 400 for malformed percent-encoded path parameters', async () => {
|
|
184
|
+
await usingAsync(await createIntegrationApi(), async ({ apiUrl }) => {
|
|
185
|
+
const response = await fetch(`${apiUrl}/testUrlParams/%E0%A4%A`)
|
|
186
|
+
expect(response.status).toBe(400)
|
|
187
|
+
const result = (await response.json()) as { message: string }
|
|
188
|
+
expect(result.message).toBe('Failed to decode URL path parameter')
|
|
189
|
+
})
|
|
190
|
+
})
|
|
191
|
+
})
|
|
192
|
+
|
|
193
|
+
describe('ServerManager events', () => {
|
|
194
|
+
it('Should emit onServerListening when a server is created', async () => {
|
|
195
|
+
await usingAsync(new Injector(), async (i) => {
|
|
196
|
+
const serverManager = i.getInstance(ServerManager)
|
|
197
|
+
const handler = vi.fn()
|
|
198
|
+
serverManager.addListener('onServerListening', handler)
|
|
199
|
+
|
|
200
|
+
const port = getPort()
|
|
201
|
+
await serverManager.getOrCreate({ port })
|
|
202
|
+
|
|
203
|
+
expect(handler).toHaveBeenCalledTimes(1)
|
|
204
|
+
expect(handler).toHaveBeenCalledWith({
|
|
205
|
+
url: `http://localhost:${port}`,
|
|
206
|
+
port,
|
|
207
|
+
hostName: undefined,
|
|
208
|
+
})
|
|
209
|
+
})
|
|
210
|
+
})
|
|
211
|
+
|
|
212
|
+
it('Should emit onServerListening with hostName when provided', async () => {
|
|
213
|
+
await usingAsync(new Injector(), async (i) => {
|
|
214
|
+
const serverManager = i.getInstance(ServerManager)
|
|
215
|
+
const handler = vi.fn()
|
|
216
|
+
serverManager.addListener('onServerListening', handler)
|
|
217
|
+
|
|
218
|
+
const port = getPort()
|
|
219
|
+
await serverManager.getOrCreate({ port, hostName: '127.0.0.1' })
|
|
220
|
+
|
|
221
|
+
expect(handler).toHaveBeenCalledWith({
|
|
222
|
+
url: `http://127.0.0.1:${port}`,
|
|
223
|
+
port,
|
|
224
|
+
hostName: '127.0.0.1',
|
|
225
|
+
})
|
|
226
|
+
})
|
|
227
|
+
})
|
|
228
|
+
|
|
229
|
+
it('Should emit onServerClosed when the server manager is disposed', async () => {
|
|
230
|
+
await usingAsync(new Injector(), async (i) => {
|
|
231
|
+
const serverManager = i.getInstance(ServerManager)
|
|
232
|
+
const handler = vi.fn()
|
|
233
|
+
serverManager.addListener('onServerClosed', handler)
|
|
234
|
+
|
|
235
|
+
const port = getPort()
|
|
236
|
+
await serverManager.getOrCreate({ port })
|
|
237
|
+
|
|
238
|
+
await serverManager[Symbol.asyncDispose]()
|
|
239
|
+
|
|
240
|
+
expect(handler).toHaveBeenCalledTimes(1)
|
|
241
|
+
expect(handler).toHaveBeenCalledWith({ url: `http://localhost:${port}` })
|
|
242
|
+
})
|
|
243
|
+
})
|
|
244
|
+
|
|
245
|
+
it('Should not emit onServerListening for an existing server', async () => {
|
|
246
|
+
await usingAsync(new Injector(), async (i) => {
|
|
247
|
+
const serverManager = i.getInstance(ServerManager)
|
|
248
|
+
const port = getPort()
|
|
249
|
+
await serverManager.getOrCreate({ port })
|
|
250
|
+
|
|
251
|
+
const handler = vi.fn()
|
|
252
|
+
serverManager.addListener('onServerListening', handler)
|
|
253
|
+
|
|
254
|
+
await serverManager.getOrCreate({ port })
|
|
255
|
+
|
|
256
|
+
expect(handler).not.toHaveBeenCalled()
|
|
257
|
+
})
|
|
258
|
+
})
|
|
172
259
|
})
|
package/src/server-manager.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Injectable } from '@furystack/inject'
|
|
2
|
-
import { EventHub } from '@furystack/utils'
|
|
2
|
+
import { EventHub, type ListenerErrorPayload } from '@furystack/utils'
|
|
3
3
|
import type { IncomingMessage, Server, ServerResponse } from 'http'
|
|
4
4
|
import { createServer } from 'http'
|
|
5
5
|
import type { Socket } from 'net'
|
|
@@ -34,7 +34,12 @@ export interface ServerRecord {
|
|
|
34
34
|
|
|
35
35
|
@Injectable({ lifetime: 'singleton' })
|
|
36
36
|
export class ServerManager
|
|
37
|
-
extends EventHub<{
|
|
37
|
+
extends EventHub<{
|
|
38
|
+
onRequestFailed: [unknown, IncomingMessage, ServerResponse<IncomingMessage>]
|
|
39
|
+
onServerListening: { url: string; port: number; hostName?: string }
|
|
40
|
+
onServerClosed: { url: string }
|
|
41
|
+
onListenerError: ListenerErrorPayload
|
|
42
|
+
}>
|
|
38
43
|
implements AsyncDisposable
|
|
39
44
|
{
|
|
40
45
|
public static DEFAULT_HOST = 'localhost'
|
|
@@ -52,10 +57,17 @@ export class ServerManager
|
|
|
52
57
|
await Promise.allSettled([...this.pendingCreates.values()])
|
|
53
58
|
this.openedSockets.forEach((s) => s.destroy())
|
|
54
59
|
await Promise.allSettled(
|
|
55
|
-
[...this.servers.
|
|
56
|
-
(s) =>
|
|
60
|
+
[...this.servers.entries()].map(
|
|
61
|
+
([url, s]) =>
|
|
57
62
|
new Promise<void>((resolve, reject) => {
|
|
58
|
-
s.server.close((err) =>
|
|
63
|
+
s.server.close((err) => {
|
|
64
|
+
if (err) {
|
|
65
|
+
reject(err)
|
|
66
|
+
} else {
|
|
67
|
+
this.emit('onServerClosed', { url })
|
|
68
|
+
resolve()
|
|
69
|
+
}
|
|
70
|
+
})
|
|
59
71
|
s.server.off('connection', this.onConnection)
|
|
60
72
|
}),
|
|
61
73
|
),
|
|
@@ -114,6 +126,7 @@ export class ServerManager
|
|
|
114
126
|
})
|
|
115
127
|
const record: ServerRecord = { server, apis }
|
|
116
128
|
this.servers.set(url, record)
|
|
129
|
+
this.emit('onServerListening', { url, port: options.port, hostName: options.hostName })
|
|
117
130
|
return record
|
|
118
131
|
} finally {
|
|
119
132
|
this.pendingCreates.delete(url)
|