@interopio/gateway-server 0.12.0-beta.0 → 0.13.0-beta.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 +6 -0
- package/dist/gateway-ent.cjs +41 -30
- package/dist/gateway-ent.cjs.map +3 -3
- package/dist/gateway-ent.js +29 -28
- package/dist/gateway-ent.js.map +3 -3
- package/dist/index.cjs +33 -32
- package/dist/index.cjs.map +3 -3
- package/dist/index.js +33 -32
- package/dist/index.js.map +3 -3
- package/dist/metrics/publisher/rest.cjs.map +2 -2
- package/dist/metrics/publisher/rest.js.map +2 -2
- package/dist/web/test.js +12 -12
- package/dist/web/test.js.map +3 -3
- package/gateway-server.d.ts +9 -2
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -44,22 +44,22 @@ var import_node_http2 = __toESM(require("node:http"), 1);
|
|
|
44
44
|
var import_node_https = __toESM(require("node:https"), 1);
|
|
45
45
|
var import_node_fs = require("node:fs");
|
|
46
46
|
var import_node_async_hooks4 = require("node:async_hooks");
|
|
47
|
-
var
|
|
47
|
+
var import_gateway6 = require("@interopio/gateway");
|
|
48
48
|
|
|
49
49
|
// src/logger.ts
|
|
50
|
-
var
|
|
51
|
-
function
|
|
52
|
-
return
|
|
50
|
+
var GatewayLogging = __toESM(require("@interopio/gateway/logging/core"), 1);
|
|
51
|
+
function getLogger2(name) {
|
|
52
|
+
return GatewayLogging.getLogger(`gateway.server.${name}`);
|
|
53
53
|
}
|
|
54
54
|
function regexAwareReplacer(_key, value) {
|
|
55
55
|
return value instanceof RegExp ? value.toString() : value;
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
// src/gateway/ws/core.ts
|
|
59
|
-
var
|
|
59
|
+
var import_gateway = require("@interopio/gateway");
|
|
60
60
|
var import_node_async_hooks = require("node:async_hooks");
|
|
61
|
-
var GatewayEncoders =
|
|
62
|
-
var log =
|
|
61
|
+
var GatewayEncoders = import_gateway.IOGateway.Encoding;
|
|
62
|
+
var log = getLogger2("ws");
|
|
63
63
|
var codec = GatewayEncoders.json();
|
|
64
64
|
function principalName(authentication) {
|
|
65
65
|
let name;
|
|
@@ -1072,7 +1072,7 @@ var localIp = (() => {
|
|
|
1072
1072
|
// src/server/monitoring.ts
|
|
1073
1073
|
var import_node_v8 = require("node:v8");
|
|
1074
1074
|
var import_promises = require("node:fs/promises");
|
|
1075
|
-
var log2 =
|
|
1075
|
+
var log2 = getLogger2("monitoring");
|
|
1076
1076
|
var DEFAULT_OPTIONS = {
|
|
1077
1077
|
memoryLimit: 1024 * 1024 * 1024,
|
|
1078
1078
|
// 1GB
|
|
@@ -1226,8 +1226,8 @@ var serverHeader = (server) => {
|
|
|
1226
1226
|
var server_header_default = (server) => serverHeader(server);
|
|
1227
1227
|
|
|
1228
1228
|
// src/server/ws-client-verify.ts
|
|
1229
|
-
var
|
|
1230
|
-
var log3 =
|
|
1229
|
+
var import_gateway2 = require("@interopio/gateway");
|
|
1230
|
+
var log3 = getLogger2("gateway.ws.client-verify");
|
|
1231
1231
|
function acceptsMissing(originFilters) {
|
|
1232
1232
|
switch (originFilters.missing) {
|
|
1233
1233
|
case "allow":
|
|
@@ -1245,10 +1245,10 @@ function acceptsMissing(originFilters) {
|
|
|
1245
1245
|
function tryMatch(originFilters, origin) {
|
|
1246
1246
|
const block = originFilters.block ?? originFilters["blacklist"];
|
|
1247
1247
|
const allow = originFilters.allow ?? originFilters["whitelist"];
|
|
1248
|
-
if (block.length > 0 &&
|
|
1248
|
+
if (block.length > 0 && import_gateway2.IOGateway.Filtering.valuesMatch(block, origin)) {
|
|
1249
1249
|
log3.warn(`origin ${origin} matches block filter`);
|
|
1250
1250
|
return false;
|
|
1251
|
-
} else if (allow.length > 0 &&
|
|
1251
|
+
} else if (allow.length > 0 && import_gateway2.IOGateway.Filtering.valuesMatch(allow, origin)) {
|
|
1252
1252
|
if (log3.enabledFor("debug")) {
|
|
1253
1253
|
log3.debug(`origin ${origin} matches allow filter`);
|
|
1254
1254
|
}
|
|
@@ -1286,8 +1286,8 @@ function acceptsOrigin(origin, originFilters) {
|
|
|
1286
1286
|
}
|
|
1287
1287
|
function regexifyOriginFilters(originFilters) {
|
|
1288
1288
|
if (originFilters) {
|
|
1289
|
-
const block = (originFilters.block ?? originFilters.blacklist ?? []).map(
|
|
1290
|
-
const allow = (originFilters.allow ?? originFilters.whitelist ?? []).map(
|
|
1289
|
+
const block = (originFilters.block ?? originFilters.blacklist ?? []).map(import_gateway2.IOGateway.Filtering.regexify);
|
|
1290
|
+
const allow = (originFilters.allow ?? originFilters.whitelist ?? []).map(import_gateway2.IOGateway.Filtering.regexify);
|
|
1291
1291
|
return {
|
|
1292
1292
|
non_matched: originFilters.non_matched ?? "allow",
|
|
1293
1293
|
missing: originFilters.missing ?? "allow",
|
|
@@ -1402,12 +1402,12 @@ var upgradeMatcher = async ({ request }) => {
|
|
|
1402
1402
|
upgradeMatcher.toString = () => "websocket upgrade";
|
|
1403
1403
|
|
|
1404
1404
|
// src/app/route.ts
|
|
1405
|
-
var
|
|
1405
|
+
var import_gateway3 = require("@interopio/gateway");
|
|
1406
1406
|
async function configure(app, config, routes) {
|
|
1407
1407
|
const applyCors = (request, options) => {
|
|
1408
1408
|
if (options?.cors) {
|
|
1409
1409
|
const cors = options.cors === true ? {
|
|
1410
|
-
allowOrigins: options.origins?.allow?.map(
|
|
1410
|
+
allowOrigins: options.origins?.allow?.map(import_gateway3.IOGateway.Filtering.regexify),
|
|
1411
1411
|
allowMethods: request.method === void 0 ? ["*"] : [request.method],
|
|
1412
1412
|
allowCredentials: options.authorize?.access !== "permitted" ? true : void 0
|
|
1413
1413
|
} : options.cors;
|
|
@@ -1418,7 +1418,7 @@ async function configure(app, config, routes) {
|
|
|
1418
1418
|
const configurer = new class {
|
|
1419
1419
|
handle(...handlers) {
|
|
1420
1420
|
handlers.forEach(({ request, options, handler }) => {
|
|
1421
|
-
const matcher = pattern(
|
|
1421
|
+
const matcher = pattern(import_gateway3.IOGateway.Filtering.regexify(request.path), { method: request.method });
|
|
1422
1422
|
if (options?.authorize) {
|
|
1423
1423
|
routes.authorize.push([matcher, options.authorize]);
|
|
1424
1424
|
}
|
|
@@ -1452,7 +1452,7 @@ async function configure(app, config, routes) {
|
|
|
1452
1452
|
}
|
|
1453
1453
|
|
|
1454
1454
|
// src/server/cors.ts
|
|
1455
|
-
var
|
|
1455
|
+
var import_gateway4 = require("@interopio/gateway");
|
|
1456
1456
|
function isSameOrigin(request) {
|
|
1457
1457
|
const origin = request.headers.one("origin");
|
|
1458
1458
|
if (origin === void 0) {
|
|
@@ -1542,7 +1542,7 @@ function validateCorsConfig(config) {
|
|
|
1542
1542
|
...config,
|
|
1543
1543
|
allowOrigins: allowOrigins.map((origin) => {
|
|
1544
1544
|
if (typeof origin === "string" && origin !== ALL) {
|
|
1545
|
-
origin =
|
|
1545
|
+
origin = import_gateway4.IOGateway.Filtering.regexify(origin);
|
|
1546
1546
|
if (typeof origin === "string") {
|
|
1547
1547
|
return trimTrailingSlash(origin).toLowerCase();
|
|
1548
1548
|
}
|
|
@@ -1605,7 +1605,7 @@ var corsFilter = (opts) => {
|
|
|
1605
1605
|
};
|
|
1606
1606
|
};
|
|
1607
1607
|
var cors_default = corsFilter;
|
|
1608
|
-
var logger =
|
|
1608
|
+
var logger = getLogger2("cors");
|
|
1609
1609
|
function rejectRequest(response) {
|
|
1610
1610
|
response.setStatusCode(HttpStatus.FORBIDDEN);
|
|
1611
1611
|
}
|
|
@@ -1684,7 +1684,7 @@ function checkOrigin(config, origin) {
|
|
|
1684
1684
|
}
|
|
1685
1685
|
const originToCheck = trimTrailingSlash(origin.toLowerCase());
|
|
1686
1686
|
for (const allowedOrigin of allowedOrigins) {
|
|
1687
|
-
if (allowedOrigin === ALL ||
|
|
1687
|
+
if (allowedOrigin === ALL || import_gateway4.IOGateway.Filtering.valueMatches(allowedOrigin, originToCheck)) {
|
|
1688
1688
|
return origin;
|
|
1689
1689
|
}
|
|
1690
1690
|
}
|
|
@@ -1697,7 +1697,7 @@ function checkMethods(config, requestMethod) {
|
|
|
1697
1697
|
if (allowedMethods === ALL) {
|
|
1698
1698
|
return [requestMethod];
|
|
1699
1699
|
}
|
|
1700
|
-
if (
|
|
1700
|
+
if (import_gateway4.IOGateway.Filtering.valuesMatch(allowedMethods, requestMethod)) {
|
|
1701
1701
|
return allowedMethods;
|
|
1702
1702
|
}
|
|
1703
1703
|
}
|
|
@@ -1756,7 +1756,7 @@ var matchingCorsConfigSource = (opts) => {
|
|
|
1756
1756
|
};
|
|
1757
1757
|
|
|
1758
1758
|
// src/app/cors.ts
|
|
1759
|
-
var
|
|
1759
|
+
var import_gateway5 = require("@interopio/gateway");
|
|
1760
1760
|
function createCorsConfigSource(context) {
|
|
1761
1761
|
const { sockets: routes, cors } = context;
|
|
1762
1762
|
const defaultCorsConfig = context.corsConfig === false ? void 0 : combineCorsConfig(PERMIT_DEFAULT_CONFIG, context.corsConfig);
|
|
@@ -1764,7 +1764,7 @@ function createCorsConfigSource(context) {
|
|
|
1764
1764
|
for (const [path, route] of routes) {
|
|
1765
1765
|
let routeCorsConfig = defaultCorsConfig;
|
|
1766
1766
|
for (const [matcher, config2] of cors) {
|
|
1767
|
-
if (
|
|
1767
|
+
if (import_gateway5.IOGateway.Filtering.valueMatches(matcher, path)) {
|
|
1768
1768
|
if (config2 === void 0) {
|
|
1769
1769
|
routeCorsConfig = void 0;
|
|
1770
1770
|
} else {
|
|
@@ -2170,7 +2170,7 @@ var httpStatusEntryPoint = (opts) => {
|
|
|
2170
2170
|
};
|
|
2171
2171
|
|
|
2172
2172
|
// src/server/security/delegating-entry-point.ts
|
|
2173
|
-
var logger2 =
|
|
2173
|
+
var logger2 = getLogger2("auth.entry-point");
|
|
2174
2174
|
var delegatingEntryPoint = (opts) => {
|
|
2175
2175
|
const defaultEntryPoint = opts.defaultEntryPoint ?? (async ({ response }, _error) => {
|
|
2176
2176
|
response.setStatusCode(HttpStatus.UNAUTHORIZED);
|
|
@@ -2526,7 +2526,7 @@ var errorFilter = (opts) => {
|
|
|
2526
2526
|
};
|
|
2527
2527
|
|
|
2528
2528
|
// src/server/security/delegating-authorization-manager.ts
|
|
2529
|
-
var logger3 =
|
|
2529
|
+
var logger3 = getLogger2("security.auth");
|
|
2530
2530
|
function delegatingAuthorizationManager(opts) {
|
|
2531
2531
|
const check = async (authentication, exchange) => {
|
|
2532
2532
|
let decision;
|
|
@@ -2547,7 +2547,7 @@ function delegatingAuthorizationManager(opts) {
|
|
|
2547
2547
|
}
|
|
2548
2548
|
|
|
2549
2549
|
// src/server/security/authorization-filter.ts
|
|
2550
|
-
var logger4 =
|
|
2550
|
+
var logger4 = getLogger2("security.auth");
|
|
2551
2551
|
function authorizationFilter(opts) {
|
|
2552
2552
|
const { manager, storage } = opts;
|
|
2553
2553
|
return async (exchange, next) => {
|
|
@@ -2917,7 +2917,7 @@ var WebHttpHandlerBuilder = class {
|
|
|
2917
2917
|
this.#webHandler = webHandler;
|
|
2918
2918
|
}
|
|
2919
2919
|
build() {
|
|
2920
|
-
const logger7 =
|
|
2920
|
+
const logger7 = getLogger2("http");
|
|
2921
2921
|
const adapter = new HandlerAdapter(logger7, this.#webHandler);
|
|
2922
2922
|
if (this.#storage !== void 0) adapter.storage = this.#storage;
|
|
2923
2923
|
adapter.enableLoggingRequestDetails = false;
|
|
@@ -3000,7 +3000,7 @@ var ExtendedWebSocket = class extends import_ws.WebSocket {
|
|
|
3000
3000
|
}
|
|
3001
3001
|
connected;
|
|
3002
3002
|
};
|
|
3003
|
-
var logger5 =
|
|
3003
|
+
var logger5 = getLogger2("ws");
|
|
3004
3004
|
function upgradeStrategy(path, route, wss, onSocketError) {
|
|
3005
3005
|
return (exchange) => {
|
|
3006
3006
|
const { logPrefix, request } = exchange;
|
|
@@ -3112,7 +3112,7 @@ async function initRoute(path, route, endpoint, storage, onSocketError) {
|
|
|
3112
3112
|
}
|
|
3113
3113
|
|
|
3114
3114
|
// src/server.ts
|
|
3115
|
-
var logger6 =
|
|
3115
|
+
var logger6 = getLogger2("app");
|
|
3116
3116
|
function secureContextOptions(ssl) {
|
|
3117
3117
|
const options = {};
|
|
3118
3118
|
if (ssl.key) options.key = (0, import_node_fs.readFileSync)(ssl.key);
|
|
@@ -3212,7 +3212,7 @@ var Factory = async (options) => {
|
|
|
3212
3212
|
storage: new import_node_async_hooks4.AsyncLocalStorage(),
|
|
3213
3213
|
sockets: /* @__PURE__ */ new Map()
|
|
3214
3214
|
};
|
|
3215
|
-
const gw =
|
|
3215
|
+
const gw = import_gateway6.IOGateway.Factory({ ...options.gateway });
|
|
3216
3216
|
if (options.gateway) {
|
|
3217
3217
|
const config = options.gateway;
|
|
3218
3218
|
await configure(async (configurer) => {
|
|
@@ -3230,7 +3230,8 @@ var Factory = async (options) => {
|
|
|
3230
3230
|
const serverP = new Promise((resolve, reject) => {
|
|
3231
3231
|
const server2 = createServer({
|
|
3232
3232
|
IncomingMessage: ExtendedHttpIncomingMessage,
|
|
3233
|
-
ServerResponse: ExtendedHttpServerResponse
|
|
3233
|
+
ServerResponse: ExtendedHttpServerResponse,
|
|
3234
|
+
...options.http
|
|
3234
3235
|
}, listener);
|
|
3235
3236
|
server2.on("error", (e) => {
|
|
3236
3237
|
if (e["code"] === "EADDRINUSE") {
|