@rest-vir/run-service 0.0.5 → 0.0.7
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.
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { check } from '@augment-vir/assert';
|
|
2
2
|
import { HttpMethod } from '@augment-vir/common';
|
|
3
|
-
import { AnyOrigin, getAllowedEndpointMethods, } from '@rest-vir/define-service';
|
|
3
|
+
import { AnyOrigin, getAllowedEndpointMethods, isAnyOrigin, } from '@rest-vir/define-service';
|
|
4
4
|
import { HttpStatus, RestVirHandlerError } from '@rest-vir/implement-service';
|
|
5
5
|
import { convertDuration } from 'date-vir';
|
|
6
6
|
/**
|
|
@@ -43,7 +43,7 @@ export async function handleCors({ route, request, }) {
|
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
function buildStandardCorsHeaders(matchedOrigin) {
|
|
46
|
-
if (matchedOrigin
|
|
46
|
+
if (isAnyOrigin(matchedOrigin)) {
|
|
47
47
|
return {
|
|
48
48
|
'Access-Control-Allow-Origin': '*',
|
|
49
49
|
};
|
|
@@ -82,7 +82,7 @@ function buildOptionsRequestCorsHeaders(matchedOrigin, allowedMethods) {
|
|
|
82
82
|
}
|
|
83
83
|
async function matchOrigin(endpoint, origin) {
|
|
84
84
|
const endpointRequirement = await checkOriginRequirement(endpoint.requiredClientOrigin, origin);
|
|
85
|
-
if (endpointRequirement
|
|
85
|
+
if (isAnyOrigin(endpointRequirement)) {
|
|
86
86
|
return AnyOrigin;
|
|
87
87
|
}
|
|
88
88
|
else if (endpointRequirement === false) {
|
|
@@ -93,7 +93,7 @@ async function matchOrigin(endpoint, origin) {
|
|
|
93
93
|
}
|
|
94
94
|
/** If the endpoint requirement is `undefined`, then we check the service requirement. */
|
|
95
95
|
const serviceRequirement = await checkOriginRequirement(endpoint.service.requiredClientOrigin, origin);
|
|
96
|
-
if (serviceRequirement
|
|
96
|
+
if (isAnyOrigin(serviceRequirement)) {
|
|
97
97
|
return AnyOrigin;
|
|
98
98
|
}
|
|
99
99
|
else if (serviceRequirement === false) {
|
|
@@ -109,7 +109,7 @@ async function matchOrigin(endpoint, origin) {
|
|
|
109
109
|
throw new RestVirHandlerError(endpoint, `Request origin '${origin}' failed to get checked for endpoint '${endpoint.path}' or service '${endpoint.service.serviceName}'`);
|
|
110
110
|
}
|
|
111
111
|
async function checkOriginRequirement(originRequirement, origin) {
|
|
112
|
-
if (originRequirement
|
|
112
|
+
if (isAnyOrigin(originRequirement)) {
|
|
113
113
|
/** Any origin has been explicitly allowed. */
|
|
114
114
|
return AnyOrigin;
|
|
115
115
|
}
|
|
@@ -191,6 +191,20 @@ export async function testExistingServer(server, service, options = {}) {
|
|
|
191
191
|
: {}))
|
|
192
192
|
: new WebSocket(webSocketUrl, protocols);
|
|
193
193
|
const finalized = await finalizeWebSocket(webSocketDefinition, webSocket, listeners, WebSocketLocation.OnClient);
|
|
194
|
+
if (webSocketOrigin == undefined) {
|
|
195
|
+
/**
|
|
196
|
+
* `injectWS` gives us a WebSocket from the `ws` package with a slightly
|
|
197
|
+
* different interface.
|
|
198
|
+
*/
|
|
199
|
+
webSocket.dispatchEvent = (event) => {
|
|
200
|
+
return webSocket.emit(event.type, event);
|
|
201
|
+
};
|
|
202
|
+
/**
|
|
203
|
+
* `injectWS` does not fire the `'open'` event so we have to do it manually
|
|
204
|
+
* here.
|
|
205
|
+
*/
|
|
206
|
+
webSocket.dispatchEvent(new Event('open'));
|
|
207
|
+
}
|
|
194
208
|
return finalized;
|
|
195
209
|
};
|
|
196
210
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rest-vir/run-service",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.7",
|
|
4
4
|
"description": "Run a service defined by @rest-vir/define-service and implemented by @rest-vir/implement-service.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"rest",
|
|
@@ -39,29 +39,32 @@
|
|
|
39
39
|
"test:update": "npm test update"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@augment-vir/assert": "^31.9.
|
|
43
|
-
"@augment-vir/common": "^31.9.
|
|
44
|
-
"@augment-vir/node": "^31.9.
|
|
42
|
+
"@augment-vir/assert": "^31.9.2",
|
|
43
|
+
"@augment-vir/common": "^31.9.2",
|
|
44
|
+
"@augment-vir/node": "^31.9.2",
|
|
45
45
|
"@fastify/websocket": "^11.0.2",
|
|
46
|
-
"@rest-vir/define-service": "^0.0.
|
|
47
|
-
"@rest-vir/implement-service": "^0.0.
|
|
46
|
+
"@rest-vir/define-service": "^0.0.7",
|
|
47
|
+
"@rest-vir/implement-service": "^0.0.7",
|
|
48
48
|
"cluster-vir": "^0.1.0",
|
|
49
|
-
"date-vir": "^7.2.
|
|
49
|
+
"date-vir": "^7.2.1",
|
|
50
50
|
"fastify": "^5.2.1",
|
|
51
51
|
"light-my-request": "^6.6.0",
|
|
52
|
-
"object-shape-tester": "^5.1.1",
|
|
53
52
|
"portfinder": "^1.0.32",
|
|
54
53
|
"type-fest": "^4.35.0",
|
|
55
|
-
"url-vir": "^2.1.
|
|
54
|
+
"url-vir": "^2.1.2"
|
|
56
55
|
},
|
|
57
56
|
"devDependencies": {
|
|
58
|
-
"@augment-vir/test": "^31.9.
|
|
57
|
+
"@augment-vir/test": "^31.9.2",
|
|
59
58
|
"@types/connect": "^3.4.38",
|
|
60
59
|
"@types/node": "^22.13.4",
|
|
61
60
|
"@types/ws": "^8.5.14",
|
|
62
61
|
"c8": "^10.1.3",
|
|
63
62
|
"istanbul-smart-text-reporter": "^1.1.5",
|
|
64
|
-
"markdown-code-example-inserter": "^3.0.3"
|
|
63
|
+
"markdown-code-example-inserter": "^3.0.3",
|
|
64
|
+
"object-shape-tester": "^5.1.3"
|
|
65
|
+
},
|
|
66
|
+
"peerDependencies": {
|
|
67
|
+
"object-shape-tester": ">=5"
|
|
65
68
|
},
|
|
66
69
|
"engines": {
|
|
67
70
|
"node": ">=22"
|