@furystack/rest-service 7.0.10 → 7.0.12
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/esm/api-manager.js +4 -4
- package/esm/api-manager.js.map +1 -1
- package/esm/endpoint-generators/utils.js +2 -0
- package/esm/endpoint-generators/utils.js.map +1 -1
- package/esm/http-authentication-settings.js +7 -8
- package/esm/http-authentication-settings.js.map +1 -1
- package/esm/http-user-context.js +24 -21
- package/esm/http-user-context.js.map +1 -1
- package/esm/models/default-session.js +8 -0
- package/esm/models/default-session.js.map +1 -1
- package/esm/schema-validator/schema-validation-error.js +1 -0
- package/esm/schema-validator/schema-validation-error.js.map +1 -1
- package/esm/schema-validator/schema-validator.d.ts +1 -2
- package/esm/schema-validator/schema-validator.d.ts.map +1 -1
- package/esm/schema-validator/schema-validator.js +3 -2
- package/esm/schema-validator/schema-validator.js.map +1 -1
- package/esm/server-manager.js +12 -12
- package/esm/server-manager.js.map +1 -1
- package/esm/static-server-manager.js +26 -26
- package/esm/static-server-manager.js.map +1 -1
- package/esm/utils.js +2 -1
- package/esm/utils.js.map +1 -1
- package/package.json +11 -11
- package/src/rest-service.integration.spec.ts +2 -1
- package/src/schema-validator/schema-validator.ts +6 -5
- package/src/static-server-manager.spec.ts +13 -13
package/esm/api-manager.js
CHANGED
|
@@ -18,10 +18,8 @@ import { Utils } from './utils.js';
|
|
|
18
18
|
import { ErrorAction } from './actions/error-action.js';
|
|
19
19
|
import './server-response-extensions.js';
|
|
20
20
|
import { HttpUserContext } from './http-user-context.js';
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
this.apis = new Map();
|
|
24
|
-
}
|
|
21
|
+
let ApiManager = class ApiManager {
|
|
22
|
+
apis = new Map();
|
|
25
23
|
dispose() {
|
|
26
24
|
this.apis.clear();
|
|
27
25
|
}
|
|
@@ -141,6 +139,7 @@ export let ApiManager = class ApiManager {
|
|
|
141
139
|
options.res.sendActionResult(await NotFoundAction({ injector: options.injector, request: options.req, response: options.res }));
|
|
142
140
|
}
|
|
143
141
|
}
|
|
142
|
+
serverManager;
|
|
144
143
|
};
|
|
145
144
|
__decorate([
|
|
146
145
|
Injected(ServerManager),
|
|
@@ -149,4 +148,5 @@ __decorate([
|
|
|
149
148
|
ApiManager = __decorate([
|
|
150
149
|
Injectable({ lifetime: 'singleton' })
|
|
151
150
|
], ApiManager);
|
|
151
|
+
export { ApiManager };
|
|
152
152
|
//# sourceMappingURL=api-manager.js.map
|
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,UAAU,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAEzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AAExD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAExD,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAEtC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAGjD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAE9D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,iCAAiC,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AA0CjD,
|
|
1
|
+
{"version":3,"file":"api-manager.js","sourceRoot":"","sources":["../src/api-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/endpoint-generators/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,uBAAuB,CAAA;AAC9B,OAAO,eAAe,CAAA;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAErD,MAAM,OAAO,SAAS;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/endpoint-generators/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,uBAAuB,CAAA;AAC9B,OAAO,eAAe,CAAA;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAErD,MAAM,OAAO,SAAS;IACpB,EAAE,CAAS;IACX,KAAK,CAAS;CACf;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAW,EAAE,EAAE;IAC1C,QAAQ,CACN,CAAC,EACD,IAAI,aAAa,CAAC;QAChB,KAAK,EAAE,SAAS;QAChB,UAAU,EAAE,IAAI;KACjB,CAAC,CACH;SACE,QAAQ,CACP,IAAI,aAAa,CAAC;QAChB,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,UAAU;KACvB,CAAC,CACH;SACA,QAAQ,CACP,IAAI,aAAa,CAAC;QAChB,KAAK,EAAE,cAAc;QACrB,UAAU,EAAE,WAAW;KACxB,CAAC,CACH,CAAA;IACH,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;AACjD,CAAC,CAAA"}
|
|
@@ -10,16 +10,15 @@ import { DefaultSession } from './models/default-session.js';
|
|
|
10
10
|
/**
|
|
11
11
|
* Authentication settings object for FuryStack HTTP Api
|
|
12
12
|
*/
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
this.enableBasicAuth = true;
|
|
20
|
-
}
|
|
13
|
+
let HttpAuthenticationSettings = class HttpAuthenticationSettings {
|
|
14
|
+
model = User;
|
|
15
|
+
getUserStore = (sm) => sm.getStoreFor(User, 'username');
|
|
16
|
+
getSessionStore = (sm) => sm.getStoreFor(DefaultSession, 'sessionId');
|
|
17
|
+
cookieName = 'fss';
|
|
18
|
+
enableBasicAuth = true;
|
|
21
19
|
};
|
|
22
20
|
HttpAuthenticationSettings = __decorate([
|
|
23
21
|
Injectable({ lifetime: 'singleton' })
|
|
24
22
|
], HttpAuthenticationSettings);
|
|
23
|
+
export { HttpAuthenticationSettings };
|
|
25
24
|
//# sourceMappingURL=http-authentication-settings.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-authentication-settings.js","sourceRoot":"","sources":["../src/http-authentication-settings.ts"],"names":[],"mappings":";;;;;;AACA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAE5D;;GAEG;AAEI,
|
|
1
|
+
{"version":3,"file":"http-authentication-settings.js","sourceRoot":"","sources":["../src/http-authentication-settings.ts"],"names":[],"mappings":";;;;;;AACA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAE5D;;GAEG;AAEI,IAAM,0BAA0B,GAAhC,MAAM,0BAA0B;IAC9B,KAAK,GAAyB,IAA4B,CAAA;IAE1D,YAAY,GAAsE,CAAC,EAAE,EAAE,EAAE,CAC9F,EAAE,CAAC,WAAW,CAAqB,IAAW,EAAE,UAAU,CAAC,CAAA;IAEtD,eAAe,GAA4E,CAAC,EAAE,EAAE,EAAE,CACvG,EAAE,CAAC,WAAW,CAAC,cAAc,EAAE,WAAW,CAAuD,CAAA;IAE5F,UAAU,GAAG,KAAK,CAAA;IAClB,eAAe,GAAG,IAAI,CAAA;CAC9B,CAAA;AAXY,0BAA0B;IADtC,UAAU,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;GACzB,0BAA0B,CAWtC"}
|
package/esm/http-user-context.js
CHANGED
|
@@ -15,27 +15,26 @@ import { randomBytes } from 'crypto';
|
|
|
15
15
|
/**
|
|
16
16
|
* Injectable UserContext for FuryStack HTTP Api
|
|
17
17
|
*/
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
18
|
+
let HttpUserContext = class HttpUserContext {
|
|
19
|
+
getUserStore = () => this.authentication.getUserStore(this.storeManager);
|
|
20
|
+
getSessionStore = () => this.authentication.getSessionStore(this.storeManager);
|
|
21
|
+
getUserByName = async (userName) => {
|
|
22
|
+
const userStore = this.getUserStore();
|
|
23
|
+
const users = await userStore.find({ filter: { username: { $eq: userName } }, top: 2 });
|
|
24
|
+
if (users.length !== 1) {
|
|
25
|
+
throw new UnauthenticatedError();
|
|
26
|
+
}
|
|
27
|
+
return users[0];
|
|
28
|
+
};
|
|
29
|
+
getSessionById = async (sessionId) => {
|
|
30
|
+
const sessionStore = this.getSessionStore();
|
|
31
|
+
const sessions = await sessionStore.find({ filter: { sessionId: { $eq: sessionId } }, top: 2 });
|
|
32
|
+
if (sessions.length !== 1) {
|
|
33
|
+
throw new UnauthenticatedError();
|
|
34
|
+
}
|
|
35
|
+
return sessions[0];
|
|
36
|
+
};
|
|
37
|
+
user;
|
|
39
38
|
/**
|
|
40
39
|
* @param request The request to be authenticated
|
|
41
40
|
* @returns if the current user is authenticated
|
|
@@ -148,6 +147,9 @@ export let HttpUserContext = class HttpUserContext {
|
|
|
148
147
|
await this.getSessionStore().remove(...sessions.map((s) => s[sessionStore.primaryKey]));
|
|
149
148
|
}
|
|
150
149
|
}
|
|
150
|
+
authentication;
|
|
151
|
+
storeManager;
|
|
152
|
+
authenticator;
|
|
151
153
|
};
|
|
152
154
|
__decorate([
|
|
153
155
|
Injected(HttpAuthenticationSettings),
|
|
@@ -164,4 +166,5 @@ __decorate([
|
|
|
164
166
|
HttpUserContext = __decorate([
|
|
165
167
|
Injectable({ lifetime: 'scoped' })
|
|
166
168
|
], HttpUserContext);
|
|
169
|
+
export { HttpUserContext };
|
|
167
170
|
//# sourceMappingURL=http-user-context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-user-context.js","sourceRoot":"","sources":["../src/http-user-context.ts"],"names":[],"mappings":";;;;;;;;;AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAA;AAE9E,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AACjF,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AAEpC;;GAEG;AAEI,
|
|
1
|
+
{"version":3,"file":"http-user-context.js","sourceRoot":"","sources":["../src/http-user-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,5 +2,13 @@
|
|
|
2
2
|
* Model class that defines the default session data
|
|
3
3
|
*/
|
|
4
4
|
export class DefaultSession {
|
|
5
|
+
/**
|
|
6
|
+
* The generated session identifier
|
|
7
|
+
*/
|
|
8
|
+
sessionId;
|
|
9
|
+
/**
|
|
10
|
+
* The user's login name for the session
|
|
11
|
+
*/
|
|
12
|
+
username;
|
|
5
13
|
}
|
|
6
14
|
//# sourceMappingURL=default-session.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-session.js","sourceRoot":"","sources":["../../src/models/default-session.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,cAAc;
|
|
1
|
+
{"version":3,"file":"default-session.js","sourceRoot":"","sources":["../../src/models/default-session.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,cAAc;IACzB;;OAEG;IACI,SAAS,CAAS;IAEzB;;OAEG;IACI,QAAQ,CAAS;CACzB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-validation-error.js","sourceRoot":"","sources":["../../src/schema-validator/schema-validation-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAG9C;;GAEG;AACH,MAAM,OAAO,qBAAsB,SAAQ,YAAY;
|
|
1
|
+
{"version":3,"file":"schema-validation-error.js","sourceRoot":"","sources":["../../src/schema-validator/schema-validation-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAG9C;;GAEG;AACH,MAAM,OAAO,qBAAsB,SAAQ,YAAY;IACzB;IAA5B,YAA4B,MAAqB;QAC/C,KAAK,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAA;QADZ,WAAM,GAAN,MAAM,CAAe;IAEjD,CAAC;CACF"}
|
|
@@ -3,9 +3,8 @@ export declare class SchemaValidator<TSchema extends {
|
|
|
3
3
|
definitions: {};
|
|
4
4
|
}> {
|
|
5
5
|
private readonly schema;
|
|
6
|
-
private readonly ajvOptions?;
|
|
7
6
|
private readonly ajv;
|
|
8
|
-
constructor(schema: TSchema, ajvOptions?: Options
|
|
7
|
+
constructor(schema: TSchema, ajvOptions?: Options);
|
|
9
8
|
/**
|
|
10
9
|
* @param data The object to validate
|
|
11
10
|
* @param options Options for the schema validation
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-validator.d.ts","sourceRoot":"","sources":["../../src/schema-validator/schema-validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,OAAO,EAAE,MAAM,KAAK,CAAA;AAK/C,qBAAa,eAAe,CAAC,OAAO,SAAS;IAAE,WAAW,EAAE,EAAE,CAAA;CAAE;
|
|
1
|
+
{"version":3,"file":"schema-validator.d.ts","sourceRoot":"","sources":["../../src/schema-validator/schema-validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,OAAO,EAAE,MAAM,KAAK,CAAA;AAK/C,qBAAa,eAAe,CAAC,OAAO,SAAS;IAAE,WAAW,EAAE,EAAE,CAAA;CAAE;IAG5D,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFzB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAa;gBAEd,MAAM,EAAE,OAAO,EAChC,UAAU,CAAC,EAAE,OAAO;IAStB;;;;;;OAMG;IACI,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE;QAAE,UAAU,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,CAAA;KAAE,GAAG,IAAI,IAAI,CAAC;CAU/F"}
|
|
@@ -2,12 +2,13 @@ import Ajv from 'ajv';
|
|
|
2
2
|
import useFormats from 'ajv-formats';
|
|
3
3
|
import { SchemaValidationError } from './schema-validation-error.js';
|
|
4
4
|
export class SchemaValidator {
|
|
5
|
+
schema;
|
|
6
|
+
ajv;
|
|
5
7
|
constructor(schema, ajvOptions) {
|
|
6
8
|
this.schema = schema;
|
|
7
|
-
this.ajvOptions = ajvOptions;
|
|
8
9
|
this.ajv = new Ajv.default({
|
|
9
10
|
allErrors: true,
|
|
10
|
-
...
|
|
11
|
+
...ajvOptions,
|
|
11
12
|
});
|
|
12
13
|
useFormats.default(this.ajv);
|
|
13
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-validator.js","sourceRoot":"","sources":["../../src/schema-validator/schema-validator.ts"],"names":[],"mappings":"AACA,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,UAAU,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AAEpE,MAAM,OAAO,eAAe;
|
|
1
|
+
{"version":3,"file":"schema-validator.js","sourceRoot":"","sources":["../../src/schema-validator/schema-validator.ts"],"names":[],"mappings":"AACA,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,UAAU,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AAEpE,MAAM,OAAO,eAAe;IAGP;IAFF,GAAG,CAAa;IACjC,YACmB,MAAe,EAChC,UAAoB;QADH,WAAM,GAAN,MAAM,CAAS;QAGhC,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC;YACzB,SAAS,EAAE,IAAI;YACf,GAAG,UAAU;SACd,CAAC,CAAA;QACF,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC9B,CAAC;IAED;;;;;;OAMG;IACI,OAAO,CAAI,IAAS,EAAE,OAAqD;QAChF,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,iBAAiB,OAAO,CAAC,UAAoB,EAAE,EAAE,CAAA;QACxF,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QAC5C,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;QACjC,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,qBAAqB,CAAC,WAAW,CAAC,MAAuB,CAAC,CAAA;SACrE;QAED,OAAO,IAAI,CAAA;IACb,CAAC;CACF"}
|
package/esm/server-manager.js
CHANGED
|
@@ -8,17 +8,17 @@ var ServerManager_1;
|
|
|
8
8
|
import { Injectable } from '@furystack/inject';
|
|
9
9
|
import { createServer } from 'http';
|
|
10
10
|
import { Lock } from 'semaphore-async-await';
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
}
|
|
11
|
+
let ServerManager = class ServerManager {
|
|
12
|
+
static { ServerManager_1 = this; }
|
|
13
|
+
static DEFAULT_HOST = 'localhost';
|
|
14
|
+
servers = new Map();
|
|
15
|
+
openedSockets = new Set();
|
|
16
|
+
listenLock = new Lock();
|
|
17
|
+
getHostUrl = (options) => `http://${options.hostName || ServerManager_1.DEFAULT_HOST}:${options.port}`;
|
|
18
|
+
onConnection = (socket) => {
|
|
19
|
+
this.openedSockets.add(socket);
|
|
20
|
+
socket.once('close', () => this.openedSockets.delete(socket));
|
|
21
|
+
};
|
|
22
22
|
async dispose() {
|
|
23
23
|
try {
|
|
24
24
|
await this.listenLock.waitFor(5000);
|
|
@@ -65,8 +65,8 @@ export let ServerManager = ServerManager_1 = class ServerManager {
|
|
|
65
65
|
return this.servers.get(url);
|
|
66
66
|
}
|
|
67
67
|
};
|
|
68
|
-
ServerManager.DEFAULT_HOST = 'localhost';
|
|
69
68
|
ServerManager = ServerManager_1 = __decorate([
|
|
70
69
|
Injectable({ lifetime: 'singleton' })
|
|
71
70
|
], ServerManager);
|
|
71
|
+
export { ServerManager };
|
|
72
72
|
//# sourceMappingURL=server-manager.js.map
|
|
@@ -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;AAG9C,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAyBrC,
|
|
1
|
+
{"version":3,"file":"server-manager.js","sourceRoot":"","sources":["../src/server-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,32 +13,8 @@ import { access, stat } from 'fs/promises';
|
|
|
13
13
|
import { getMimeForFile } from './mime-types.js';
|
|
14
14
|
import { join, normalize, sep } from 'path';
|
|
15
15
|
import { ServerManager } from './server-manager.js';
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
this.shouldExec = (baseUrl) => ({ req }) => req.url &&
|
|
19
|
-
req.method?.toUpperCase() === 'GET' &&
|
|
20
|
-
(req.url === baseUrl || req.url.startsWith(baseUrl[baseUrl.length - 1] === '/' ? baseUrl : `${baseUrl}/`))
|
|
21
|
-
? true
|
|
22
|
-
: false;
|
|
23
|
-
this.onRequest = ({ path, baseUrl, fallback, headers, }) => {
|
|
24
|
-
return async ({ req, res }) => {
|
|
25
|
-
const filePath = req.url.substring(baseUrl.length - 1).replaceAll('/', sep);
|
|
26
|
-
const fullPath = normalize(join(path, filePath));
|
|
27
|
-
try {
|
|
28
|
-
await this.sendFile({ fullPath, res, headers });
|
|
29
|
-
}
|
|
30
|
-
catch (error) {
|
|
31
|
-
if (fallback) {
|
|
32
|
-
await this.sendFile({ fullPath: normalize(join(path, fallback)), res, headers });
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
res.writeHead(404, { 'Content-Type': 'text/plain' });
|
|
36
|
-
res.end('Not found');
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
|
-
};
|
|
41
|
-
}
|
|
16
|
+
let StaticServerManager = class StaticServerManager {
|
|
17
|
+
serverManager;
|
|
42
18
|
async sendFile({ fullPath, headers, res, }) {
|
|
43
19
|
const { size } = await stat(fullPath);
|
|
44
20
|
await access(fullPath);
|
|
@@ -50,6 +26,29 @@ export let StaticServerManager = class StaticServerManager {
|
|
|
50
26
|
Object.entries(head).map(([key, value]) => res.setHeader(key, value));
|
|
51
27
|
await new Promise((resolve, reject) => createReadStream(fullPath, { autoClose: true }).once('finish', resolve).once('error', reject).pipe(res));
|
|
52
28
|
}
|
|
29
|
+
shouldExec = (baseUrl) => ({ req }) => req.url &&
|
|
30
|
+
req.method?.toUpperCase() === 'GET' &&
|
|
31
|
+
(req.url === baseUrl || req.url.startsWith(baseUrl[baseUrl.length - 1] === '/' ? baseUrl : `${baseUrl}/`))
|
|
32
|
+
? true
|
|
33
|
+
: false;
|
|
34
|
+
onRequest = ({ path, baseUrl, fallback, headers, }) => {
|
|
35
|
+
return async ({ req, res }) => {
|
|
36
|
+
const filePath = req.url.substring(baseUrl.length - 1).replaceAll('/', sep);
|
|
37
|
+
const fullPath = normalize(join(path, filePath));
|
|
38
|
+
try {
|
|
39
|
+
await this.sendFile({ fullPath, res, headers });
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
if (fallback) {
|
|
43
|
+
await this.sendFile({ fullPath: normalize(join(path, fallback)), res, headers });
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
res.writeHead(404, { 'Content-Type': 'text/plain' });
|
|
47
|
+
res.end('Not found');
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
};
|
|
53
52
|
async addStaticSite(options) {
|
|
54
53
|
const server = await this.serverManager.getOrCreate({ hostName: options.hostName, port: options.port });
|
|
55
54
|
server.apis.push({
|
|
@@ -65,4 +64,5 @@ __decorate([
|
|
|
65
64
|
StaticServerManager = __decorate([
|
|
66
65
|
Injectable({ lifetime: 'singleton' })
|
|
67
66
|
], StaticServerManager);
|
|
67
|
+
export { StaticServerManager };
|
|
68
68
|
//# sourceMappingURL=static-server-manager.js.map
|
|
@@ -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,gBAAgB,EAAE,MAAM,IAAI,CAAA;AACrC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAE1C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAY5C,
|
|
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,gBAAgB,EAAE,MAAM,IAAI,CAAA;AACrC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAE1C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAY5C,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAEb,aAAa,CAAgB;IAEtC,KAAK,CAAC,QAAQ,CAAC,EACrB,QAAQ,EACR,OAAO,EACP,GAAG,GAKJ;QACC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAA;QAErC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAA;QAEtB,MAAM,IAAI,GAAG;YACX,GAAG,OAAO;YACV,gBAAgB,EAAE,IAAI;YACtB,cAAc,EAAE,cAAc,CAAC,QAAQ,CAAC;SACzC,CAAA;QACD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAA;QACrE,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAC1C,gBAAgB,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CACxG,CAAA;IACH,CAAC;IAEM,UAAU,GACf,CAAC,OAAe,EAAE,EAAE,CACpB,CAAC,EAAE,GAAG,EAAoD,EAAE,EAAE,CAC5D,GAAG,CAAC,GAAG;QACP,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,KAAK;QACnC,CAAC,GAAG,CAAC,GAAG,KAAK,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC;QACxG,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,KAAK,CAAA;IAEL,SAAS,GAAG,CAAC,EACnB,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,OAAO,GAMR,EAAE,EAAE;QACH,OAAO,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAiD,EAAE,EAAE;YAC3E,MAAM,QAAQ,GAAI,GAAG,CAAC,GAAc,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;YACvF,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAA;YAEhD,IAAI;gBACF,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAA;aAChD;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,QAAQ,EAAE;oBACZ,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAA;iBACjF;qBAAM;oBACL,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CAAA;oBACpD,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;iBACrB;aACF;QACH,CAAC,CAAA;IACH,CAAC,CAAA;IAEM,KAAK,CAAC,aAAa,CAAC,OAA4B;QACrD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;QAEvG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YACf,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC;YAC5C,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC;SAC1C,CAAC,CAAA;IACJ,CAAC;CACF,CAAA;AAvEkB;IADhB,QAAQ,CAAC,aAAa,CAAC;8BACS,aAAa;0DAAA;AAFnC,mBAAmB;IAD/B,UAAU,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;GACzB,mBAAmB,CAyE/B"}
|
package/esm/utils.js
CHANGED
|
@@ -8,7 +8,7 @@ import { Injectable } from '@furystack/inject';
|
|
|
8
8
|
/**
|
|
9
9
|
* A collection of various HTTP API related utilities
|
|
10
10
|
*/
|
|
11
|
-
|
|
11
|
+
let Utils = class Utils {
|
|
12
12
|
async readPostBodyRaw(incomingMessage) {
|
|
13
13
|
if (!incomingMessage.readable) {
|
|
14
14
|
throw Error('Incoming message is not readable');
|
|
@@ -66,4 +66,5 @@ export let Utils = class Utils {
|
|
|
66
66
|
Utils = __decorate([
|
|
67
67
|
Injectable({ lifetime: 'transient' })
|
|
68
68
|
], Utils);
|
|
69
|
+
export { Utils };
|
|
69
70
|
//# sourceMappingURL=utils.js.map
|
package/esm/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;;;;AACA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAG9C;;GAEG;AAEI,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;;;;AACA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAG9C;;GAEG;AAEI,IAAM,KAAK,GAAX,MAAM,KAAK;IACT,KAAK,CAAC,eAAe,CAAC,eAAgC;QAC3D,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;YAC7B,MAAM,KAAK,CAAC,kCAAkC,CAAC,CAAA;SAChD;QAED,IAAI,IAAI,GAAG,EAAE,CAAA;QACb,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE;gBAClC,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,EAAE,CAAA;gBACnC,IAAI,IAAI,EAAE;oBACR,IAAI,IAAI,IAAI,CAAA;iBACb;YACH,CAAC,CAAC,CAAA;YACF,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBAC7B,OAAO,EAAE,CAAA;YACX,CAAC,CAAC,CAAA;YACF,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBAClC,MAAM,CAAC,GAAG,CAAC,CAAA;YACb,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,YAAY,CAAI,eAAgC;QAC3D,MAAM,IAAI,GAAG,eAAe,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,CAAA;QAChG,eAAe,CAAC,QAAQ,GAAG,IAAI,CAAA;QAC/B,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;OAKG;IACI,cAAc,CAAC,OAAoB,EAAE,eAAgC,EAAE,cAA8B;QAC1G,IACE,eAAe,CAAC,OAAO;YACvB,eAAe,CAAC,OAAO,CAAC,MAAM,KAAK,eAAe,CAAC,OAAO,CAAC,IAAI;YAC/D,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,EAC3E;YACA,cAAc,CAAC,SAAS,CAAC,6BAA6B,EAAE,eAAe,CAAC,OAAO,CAAC,MAAgB,CAAC,CAAA;YACjG,IAAI,OAAO,CAAC,WAAW,EAAE;gBACvB,cAAc,CAAC,SAAS,CAAC,kCAAkC,EAAE,MAAM,CAAC,CAAA;aACrE;YACD,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE;gBAC7C,cAAc,CAAC,SAAS,CAAC,8BAA8B,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;aACrF;YACD,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE;gBAC7C,cAAc,CAAC,SAAS,CAAC,8BAA8B,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;aACrF;SACF;IACH,CAAC;CACF,CAAA;AA3DY,KAAK;IADjB,UAAU,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;GACzB,KAAK,CA2DjB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@furystack/rest-service",
|
|
3
|
-
"version": "7.0.
|
|
3
|
+
"version": "7.0.12",
|
|
4
4
|
"description": "Repository implementation for FuryStack",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
@@ -37,22 +37,22 @@
|
|
|
37
37
|
},
|
|
38
38
|
"homepage": "https://github.com/furystack/furystack",
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@furystack/core": "^12.0.
|
|
41
|
-
"@furystack/inject": "^8.0
|
|
42
|
-
"@furystack/repository": "^7.0.
|
|
43
|
-
"@furystack/rest": "^5.0.
|
|
44
|
-
"@furystack/security": "^3.0.
|
|
45
|
-
"@furystack/utils": "^4.0.
|
|
40
|
+
"@furystack/core": "^12.0.10",
|
|
41
|
+
"@furystack/inject": "^8.1.0",
|
|
42
|
+
"@furystack/repository": "^7.0.10",
|
|
43
|
+
"@furystack/rest": "^5.0.11",
|
|
44
|
+
"@furystack/security": "^3.0.10",
|
|
45
|
+
"@furystack/utils": "^4.0.9",
|
|
46
46
|
"ajv": "^8.12.0",
|
|
47
47
|
"ajv-formats": "^2.1.1",
|
|
48
48
|
"path-to-regexp": "^6.2.1",
|
|
49
49
|
"semaphore-async-await": "^1.5.1"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
|
-
"@furystack/rest-client-fetch": "^5.0.
|
|
53
|
-
"@types/node": "^20.5.
|
|
54
|
-
"typescript": "^5.
|
|
55
|
-
"vitest": "^0.34.
|
|
52
|
+
"@furystack/rest-client-fetch": "^5.0.11",
|
|
53
|
+
"@types/node": "^20.5.6",
|
|
54
|
+
"typescript": "^5.2.2",
|
|
55
|
+
"vitest": "^0.34.3"
|
|
56
56
|
},
|
|
57
57
|
"gitHead": "1045d854bfd8c475b7035471d130d401417a2321"
|
|
58
58
|
}
|
|
@@ -8,6 +8,7 @@ import { DefaultSession } from './models/default-session'
|
|
|
8
8
|
import { JsonResult } from './request-action-implementation'
|
|
9
9
|
import { useHttpAuthentication, useRestService } from './helpers'
|
|
10
10
|
import { describe, it, expect } from 'vitest'
|
|
11
|
+
import { serializeValue } from '@furystack/rest'
|
|
11
12
|
|
|
12
13
|
class UserWithPassword extends User {
|
|
13
14
|
password!: string
|
|
@@ -139,7 +140,7 @@ describe('@furystack/rest-service inregration tests', () => {
|
|
|
139
140
|
await usingAsync(new Injector(), async (i) => {
|
|
140
141
|
const { apiUrl } = await prepareInjector(i)
|
|
141
142
|
|
|
142
|
-
const response = await fetch(PathHelper.joinPaths(apiUrl,
|
|
143
|
+
const response = await fetch(PathHelper.joinPaths(apiUrl, `testQuery?param1=${serializeValue('foo')}`))
|
|
143
144
|
expect(response.status).toBe(200)
|
|
144
145
|
const result = await response.json()
|
|
145
146
|
expect(result).toEqual({ param1Value: 'foo' })
|
|
@@ -4,14 +4,15 @@ import useFormats from 'ajv-formats'
|
|
|
4
4
|
import { SchemaValidationError } from './schema-validation-error.js'
|
|
5
5
|
|
|
6
6
|
export class SchemaValidator<TSchema extends { definitions: {} }> {
|
|
7
|
-
private readonly ajv
|
|
8
|
-
allErrors: true,
|
|
9
|
-
...this.ajvOptions,
|
|
10
|
-
})
|
|
7
|
+
private readonly ajv: Ajv.default
|
|
11
8
|
constructor(
|
|
12
9
|
private readonly schema: TSchema,
|
|
13
|
-
|
|
10
|
+
ajvOptions?: Options,
|
|
14
11
|
) {
|
|
12
|
+
this.ajv = new Ajv.default({
|
|
13
|
+
allErrors: true,
|
|
14
|
+
...ajvOptions,
|
|
15
|
+
})
|
|
15
16
|
useFormats.default(this.ajv)
|
|
16
17
|
}
|
|
17
18
|
|
|
@@ -10,7 +10,7 @@ import { describe, it, expect, vi } from 'vitest'
|
|
|
10
10
|
* @yields a port for testing
|
|
11
11
|
* @returns The Port number
|
|
12
12
|
*/
|
|
13
|
-
function*
|
|
13
|
+
function* portGenerator(initialPort = 1234) {
|
|
14
14
|
let port = initialPort
|
|
15
15
|
|
|
16
16
|
while (true) {
|
|
@@ -19,14 +19,14 @@ function* getPort(initialPort = 1234) {
|
|
|
19
19
|
return port
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
const portGenerator = getPort()
|
|
22
|
+
const getPort = () => portGenerator().next().value
|
|
24
23
|
|
|
24
|
+
describe('StaticServerManager', () => {
|
|
25
25
|
describe('Top level routing', () => {
|
|
26
26
|
it('Should return a 404 without fallback', async () => {
|
|
27
27
|
await usingAsync(new Injector(), async (injector) => {
|
|
28
28
|
const staticServerManager = injector.getInstance(StaticServerManager)
|
|
29
|
-
const port =
|
|
29
|
+
const port = getPort()
|
|
30
30
|
await staticServerManager.addStaticSite({
|
|
31
31
|
baseUrl: '/',
|
|
32
32
|
path: '.',
|
|
@@ -45,7 +45,7 @@ describe('StaticServerManager', () => {
|
|
|
45
45
|
it('Should return a fallback', async () => {
|
|
46
46
|
await usingAsync(new Injector(), async (injector) => {
|
|
47
47
|
const staticServerManager = injector.getInstance(StaticServerManager)
|
|
48
|
-
const port =
|
|
48
|
+
const port = getPort()
|
|
49
49
|
|
|
50
50
|
await staticServerManager.addStaticSite({
|
|
51
51
|
baseUrl: '/',
|
|
@@ -67,7 +67,7 @@ describe('StaticServerManager', () => {
|
|
|
67
67
|
it('Should return a fallback for root files', async () => {
|
|
68
68
|
await usingAsync(new Injector(), async (injector) => {
|
|
69
69
|
const staticServerManager = injector.getInstance(StaticServerManager)
|
|
70
|
-
const port =
|
|
70
|
+
const port = getPort()
|
|
71
71
|
|
|
72
72
|
await staticServerManager.addStaticSite({
|
|
73
73
|
baseUrl: '/',
|
|
@@ -89,7 +89,7 @@ describe('StaticServerManager', () => {
|
|
|
89
89
|
it('Should return a defined file from a root directory', async () => {
|
|
90
90
|
await usingAsync(new Injector(), async (injector) => {
|
|
91
91
|
const staticServerManager = injector.getInstance(StaticServerManager)
|
|
92
|
-
const port =
|
|
92
|
+
const port = getPort()
|
|
93
93
|
|
|
94
94
|
await staticServerManager.addStaticSite({
|
|
95
95
|
baseUrl: '/',
|
|
@@ -110,7 +110,7 @@ describe('StaticServerManager', () => {
|
|
|
110
110
|
it('Should return a defined file from a subdirectory', async () => {
|
|
111
111
|
await usingAsync(new Injector(), async (injector) => {
|
|
112
112
|
const staticServerManager = injector.getInstance(StaticServerManager)
|
|
113
|
-
const port =
|
|
113
|
+
const port = getPort()
|
|
114
114
|
|
|
115
115
|
await staticServerManager.addStaticSite({
|
|
116
116
|
baseUrl: '/',
|
|
@@ -129,7 +129,7 @@ describe('StaticServerManager', () => {
|
|
|
129
129
|
it('Should not handle a request when the path is not matching', async () => {
|
|
130
130
|
await usingAsync(new Injector(), async (injector) => {
|
|
131
131
|
const staticServerManager = injector.getInstance(StaticServerManager)
|
|
132
|
-
const port =
|
|
132
|
+
const port = getPort()
|
|
133
133
|
|
|
134
134
|
await staticServerManager.addStaticSite({
|
|
135
135
|
baseUrl: '/bundle',
|
|
@@ -154,7 +154,7 @@ describe('StaticServerManager', () => {
|
|
|
154
154
|
it('Should return a 404 without fallback', async () => {
|
|
155
155
|
await usingAsync(new Injector(), async (injector) => {
|
|
156
156
|
const staticServerManager = injector.getInstance(StaticServerManager)
|
|
157
|
-
const port =
|
|
157
|
+
const port = getPort()
|
|
158
158
|
|
|
159
159
|
await staticServerManager.addStaticSite({
|
|
160
160
|
baseUrl: '/bundle',
|
|
@@ -174,7 +174,7 @@ describe('StaticServerManager', () => {
|
|
|
174
174
|
it('Should return a fallback', async () => {
|
|
175
175
|
await usingAsync(new Injector(), async (injector) => {
|
|
176
176
|
const staticServerManager = injector.getInstance(StaticServerManager)
|
|
177
|
-
const port =
|
|
177
|
+
const port = getPort()
|
|
178
178
|
|
|
179
179
|
await staticServerManager.addStaticSite({
|
|
180
180
|
baseUrl: '/bundle',
|
|
@@ -192,7 +192,7 @@ describe('StaticServerManager', () => {
|
|
|
192
192
|
it('Should return a defined file from a root directory', async () => {
|
|
193
193
|
await usingAsync(new Injector(), async (injector) => {
|
|
194
194
|
const staticServerManager = injector.getInstance(StaticServerManager)
|
|
195
|
-
const port =
|
|
195
|
+
const port = getPort()
|
|
196
196
|
|
|
197
197
|
await staticServerManager.addStaticSite({
|
|
198
198
|
baseUrl: '/',
|
|
@@ -209,7 +209,7 @@ describe('StaticServerManager', () => {
|
|
|
209
209
|
it('Should return a defined file from a subdirectory', async () => {
|
|
210
210
|
await usingAsync(new Injector(), async (injector) => {
|
|
211
211
|
const staticServerManager = injector.getInstance(StaticServerManager)
|
|
212
|
-
const port =
|
|
212
|
+
const port = getPort()
|
|
213
213
|
|
|
214
214
|
await staticServerManager.addStaticSite({
|
|
215
215
|
baseUrl: '/',
|