equipped 5.3.0 → 5.3.2
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 +9 -0
- package/dist/cjs/cache/adapters/in-memory/index.cjs +155 -155
- package/dist/cjs/cache/adapters/in-memory/index.cjs.map +1 -1
- package/dist/cjs/cache/adapters/in-memory/index.min.cjs +3 -3
- package/dist/cjs/cache/adapters/in-memory/index.min.cjs.map +1 -1
- package/dist/cjs/dbs/adapters/mongodb/index.cjs.map +1 -1
- package/dist/cjs/dbs/adapters/mongodb/index.min.cjs +2 -2
- package/dist/cjs/dbs/adapters/mongodb/index.min.cjs.map +1 -1
- package/dist/cjs/dbs/index.cjs +181 -179
- package/dist/cjs/dbs/index.cjs.map +1 -1
- package/dist/cjs/dbs/index.min.cjs +3 -3
- package/dist/cjs/dbs/index.min.cjs.map +1 -1
- package/dist/cjs/events/adapters/kafka/index.cjs.map +1 -1
- package/dist/cjs/events/adapters/kafka/index.min.cjs +2 -2
- package/dist/cjs/events/adapters/kafka/index.min.cjs.map +1 -1
- package/dist/cjs/events/adapters/rabbitmq/index.cjs +179 -179
- package/dist/cjs/events/adapters/rabbitmq/index.cjs.map +1 -1
- package/dist/cjs/events/adapters/rabbitmq/index.min.cjs +3 -3
- package/dist/cjs/events/adapters/rabbitmq/index.min.cjs.map +1 -1
- package/dist/cjs/orm/adapters/mongodb/index.cjs +144 -144
- package/dist/cjs/orm/adapters/mongodb/index.cjs.map +1 -1
- package/dist/cjs/orm/adapters/mongodb/index.min.cjs +1 -1
- package/dist/cjs/orm/adapters/mongodb/index.min.cjs.map +1 -1
- package/dist/cjs/orm/adapters/postgresql/index.cjs +144 -215
- package/dist/cjs/orm/adapters/postgresql/index.cjs.map +1 -1
- package/dist/cjs/orm/adapters/postgresql/index.min.cjs +11 -11
- package/dist/cjs/orm/adapters/postgresql/index.min.cjs.map +1 -1
- package/dist/cjs/server/adapters/express/index.cjs +338 -226
- package/dist/cjs/server/adapters/express/index.cjs.map +1 -1
- package/dist/cjs/server/adapters/express/index.min.cjs +7 -7
- package/dist/cjs/server/adapters/express/index.min.cjs.map +1 -1
- package/dist/cjs/server/adapters/fastify/index.cjs +323 -211
- package/dist/cjs/server/adapters/fastify/index.cjs.map +1 -1
- package/dist/cjs/server/adapters/fastify/index.min.cjs +7 -7
- package/dist/cjs/server/adapters/fastify/index.min.cjs.map +1 -1
- package/dist/cjs/server/index.cjs +128 -16
- package/dist/cjs/server/index.cjs.map +1 -1
- package/dist/cjs/server/index.min.cjs +6 -6
- package/dist/cjs/server/index.min.cjs.map +1 -1
- package/dist/cjs/utilities/index.cjs +0 -5
- package/dist/cjs/utilities/index.cjs.map +1 -1
- package/dist/cjs/utilities/index.min.cjs +2 -2
- package/dist/cjs/utilities/index.min.cjs.map +1 -1
- package/dist/esm/cache/adapters/in-memory/index.min.mjs +1 -1
- package/dist/esm/cache/adapters/in-memory/index.min.mjs.map +1 -1
- package/dist/esm/cache/adapters/in-memory/index.mjs +6 -3
- package/dist/esm/cache/adapters/in-memory/index.mjs.map +1 -1
- package/dist/esm/cache/adapters/redis/index.min.mjs +1 -1
- package/dist/esm/cache/adapters/redis/index.mjs +5 -3
- package/dist/esm/cache/index.min.mjs +1 -1
- package/dist/esm/cache/index.mjs +2 -2
- package/dist/esm/{chunk-PNZNNUMN.mjs → chunk-26BOI6IL.mjs} +7 -5
- package/dist/esm/{chunk-PNZNNUMN.mjs.map → chunk-26BOI6IL.mjs.map} +1 -1
- package/dist/esm/{chunk-4JLDXF7T.min.mjs → chunk-AODOD22O.min.mjs} +2 -2
- package/dist/esm/chunk-APSDCRY5.min.mjs +32 -0
- package/dist/esm/chunk-APSDCRY5.min.mjs.map +1 -0
- package/dist/esm/{chunk-MDQKODYQ.mjs → chunk-CEYT5YBA.mjs} +204 -348
- package/dist/esm/chunk-CEYT5YBA.mjs.map +1 -0
- package/dist/esm/chunk-CU2HU5UE.min.mjs +2 -0
- package/dist/esm/chunk-CU2HU5UE.min.mjs.map +1 -0
- package/dist/esm/chunk-DAK7OKSH.min.mjs +2 -0
- package/dist/esm/{chunk-SGZNOYC3.min.mjs.map → chunk-DAK7OKSH.min.mjs.map} +1 -1
- package/dist/esm/{chunk-PCAUXBAG.min.mjs → chunk-DAUQA32Q.min.mjs} +2 -2
- package/dist/esm/{chunk-JH6EBXY4.mjs → chunk-FQYRVHQT.mjs} +2 -2
- package/dist/esm/chunk-NEF3UYFA.mjs +144 -0
- package/dist/esm/chunk-NEF3UYFA.mjs.map +1 -0
- package/dist/esm/chunk-NNFUYHQ7.mjs +135 -0
- package/dist/esm/chunk-NNFUYHQ7.mjs.map +1 -0
- package/dist/esm/{chunk-4MXYZS5R.mjs → chunk-PCEHFZ6G.mjs} +9 -5
- package/dist/esm/{chunk-4MXYZS5R.mjs.map → chunk-PCEHFZ6G.mjs.map} +1 -1
- package/dist/esm/{chunk-B5QQ32YY.min.mjs → chunk-QCCDJLBH.min.mjs} +2 -2
- package/dist/esm/{chunk-PQCBVQL6.mjs → chunk-RIXTQQUU.mjs} +2 -2
- package/dist/esm/{chunk-Z2TZ3KR7.mjs → chunk-RPPYCWXW.mjs} +2 -2
- package/dist/esm/{chunk-AKQBDYUO.mjs → chunk-T2O72JBW.mjs} +3 -3
- package/dist/esm/{chunk-TVTYDU2D.mjs → chunk-VQO4MSEC.mjs} +5 -5
- package/dist/esm/{chunk-ZGMFFK6Y.min.mjs → chunk-X7VNAGLR.min.mjs} +2 -2
- package/dist/esm/chunk-XTXAEBXY.min.mjs +2 -0
- package/dist/esm/{chunk-5VW3JAFR.min.mjs.map → chunk-XTXAEBXY.min.mjs.map} +1 -1
- package/dist/esm/{chunk-QHLKB47N.min.mjs → chunk-YDQW6ETS.min.mjs} +2 -2
- package/dist/esm/chunk-ZDBDR3IB.min.mjs +2 -0
- package/dist/esm/chunk-ZDBDR3IB.min.mjs.map +1 -0
- package/dist/esm/dbs/adapters/mongodb/index.min.mjs +1 -1
- package/dist/esm/dbs/adapters/mongodb/index.min.mjs.map +1 -1
- package/dist/esm/dbs/adapters/mongodb/index.mjs +8 -5
- package/dist/esm/dbs/adapters/mongodb/index.mjs.map +1 -1
- package/dist/esm/dbs/index.min.mjs +1 -1
- package/dist/esm/dbs/index.mjs +5 -3
- package/dist/esm/errors/index.min.mjs +1 -1
- package/dist/esm/errors/index.mjs +1 -1
- package/dist/esm/events/adapters/kafka/index.min.mjs +1 -1
- package/dist/esm/events/adapters/kafka/index.mjs +4 -2
- package/dist/esm/events/adapters/rabbitmq/index.min.mjs +1 -1
- package/dist/esm/events/adapters/rabbitmq/index.min.mjs.map +1 -1
- package/dist/esm/events/adapters/rabbitmq/index.mjs +7 -3
- package/dist/esm/events/adapters/rabbitmq/index.mjs.map +1 -1
- package/dist/esm/index.min.mjs +1 -1
- package/dist/esm/index.mjs +1 -1
- package/dist/esm/instance/index.min.mjs +1 -1
- package/dist/esm/instance/index.mjs +1 -1
- package/dist/esm/{introspection-32BRYKYY.mjs → introspection-FGDVYTPP.mjs} +3 -3
- package/dist/esm/introspection-UDWDS6DV.min.mjs +2 -0
- package/dist/esm/jobs/adapters/redis/index.min.mjs +1 -1
- package/dist/esm/jobs/adapters/redis/index.min.mjs.map +1 -1
- package/dist/esm/jobs/adapters/redis/index.mjs +10 -6
- package/dist/esm/jobs/adapters/redis/index.mjs.map +1 -1
- package/dist/esm/orm/adapters/in-memory/index.min.mjs +1 -1
- package/dist/esm/orm/adapters/in-memory/index.mjs +4 -3
- package/dist/esm/orm/adapters/json/index.min.mjs +1 -1
- package/dist/esm/orm/adapters/json/index.min.mjs.map +1 -1
- package/dist/esm/orm/adapters/json/index.mjs +6 -5
- package/dist/esm/orm/adapters/json/index.mjs.map +1 -1
- package/dist/esm/orm/adapters/mongodb/index.min.mjs +1 -1
- package/dist/esm/orm/adapters/mongodb/index.min.mjs.map +1 -1
- package/dist/esm/orm/adapters/mongodb/index.mjs +6 -4
- package/dist/esm/orm/adapters/mongodb/index.mjs.map +1 -1
- package/dist/esm/orm/adapters/postgresql/index.min.mjs +2 -2
- package/dist/esm/orm/adapters/postgresql/index.min.mjs.map +1 -1
- package/dist/esm/orm/adapters/postgresql/index.mjs +8 -5
- package/dist/esm/orm/adapters/postgresql/index.mjs.map +1 -1
- package/dist/esm/orm/index.min.mjs +1 -1
- package/dist/esm/orm/index.mjs +3 -3
- package/dist/esm/server/adapters/express/index.min.mjs +1 -1
- package/dist/esm/server/adapters/express/index.min.mjs.map +1 -1
- package/dist/esm/server/adapters/express/index.mjs +7 -3
- package/dist/esm/server/adapters/express/index.mjs.map +1 -1
- package/dist/esm/server/adapters/fastify/index.min.mjs +1 -1
- package/dist/esm/server/adapters/fastify/index.min.mjs.map +1 -1
- package/dist/esm/server/adapters/fastify/index.mjs +7 -3
- package/dist/esm/server/adapters/fastify/index.mjs.map +1 -1
- package/dist/esm/server/index.min.mjs +1 -1
- package/dist/esm/server/index.mjs +1 -1
- package/dist/esm/utilities/index.min.mjs +1 -1
- package/dist/esm/utilities/index.mjs +5 -4
- package/dist/esm/validations/index.min.mjs +1 -1
- package/dist/esm/validations/index.mjs +1 -1
- package/dist/types/{base-DVr0fHil.d.ts → base-qDndMBf8.d.ts} +9 -3
- package/dist/types/cache/adapters/in-memory/index.js +7 -4
- package/dist/types/cache/adapters/redis/index.js +5 -3
- package/dist/types/cache/index.js +2 -2
- package/dist/types/{chunk-NJ2FHI3U.js → chunk-35CDCTLR.js} +4 -4
- package/dist/types/{chunk-XGGGAEET.js → chunk-4YQA5GPT.js} +8 -4
- package/dist/types/{chunk-65EHKCDZ.js → chunk-AQIV47BY.js} +6 -4
- package/dist/types/{chunk-YTY3EFNB.js → chunk-BKDWUJRG.js} +203 -347
- package/dist/types/{chunk-JQ2FWX4W.js → chunk-DA2VYP7D.js} +1 -1
- package/dist/types/{chunk-3TKJGSCZ.js → chunk-GDMGPX4C.js} +1 -1
- package/dist/types/chunk-H5V6ADFD.js +134 -0
- package/dist/types/{chunk-3M4PBZAQ.js → chunk-OOKJEMQI.js} +2 -2
- package/dist/types/chunk-PPD4WDG6.js +143 -0
- package/dist/types/{chunk-OHFTQGQG.js → chunk-T7K7PO6G.js} +1 -1
- package/dist/types/dbs/adapters/mongodb/index.js +8 -5
- package/dist/types/dbs/index.js +5 -3
- package/dist/types/errors/index.js +1 -1
- package/dist/types/events/adapters/kafka/index.js +4 -2
- package/dist/types/events/adapters/rabbitmq/index.js +7 -3
- package/dist/types/index.js +1 -1
- package/dist/types/instance/index.js +1 -1
- package/dist/types/{introspection-VOIU3XE6.js → introspection-FSNS33CQ.js} +2 -2
- package/dist/types/jobs/adapters/redis/index.js +10 -6
- package/dist/types/orm/adapters/in-memory/index.js +4 -3
- package/dist/types/orm/adapters/json/index.js +6 -5
- package/dist/types/orm/adapters/mongodb/index.js +6 -4
- package/dist/types/orm/adapters/postgresql/index.js +8 -5
- package/dist/types/orm/index.js +3 -3
- package/dist/types/server/adapters/express/index.d.ts +1 -1
- package/dist/types/server/adapters/express/index.js +7 -3
- package/dist/types/server/adapters/fastify/index.d.ts +1 -1
- package/dist/types/server/adapters/fastify/index.js +7 -3
- package/dist/types/server/index.d.ts +2 -2
- package/dist/types/server/index.js +1 -1
- package/dist/types/utilities/index.d.ts +1 -2
- package/dist/types/utilities/index.js +5 -4
- package/dist/types/validations/index.js +1 -1
- package/package.json +1 -1
- package/dist/esm/chunk-5VW3JAFR.min.mjs +0 -2
- package/dist/esm/chunk-FLAPYQUT.min.mjs +0 -32
- package/dist/esm/chunk-FLAPYQUT.min.mjs.map +0 -1
- package/dist/esm/chunk-MDQKODYQ.mjs.map +0 -1
- package/dist/esm/chunk-SGZNOYC3.min.mjs +0 -2
- package/dist/esm/introspection-A72WMWE3.min.mjs +0 -2
- /package/dist/esm/{chunk-4JLDXF7T.min.mjs.map → chunk-AODOD22O.min.mjs.map} +0 -0
- /package/dist/esm/{chunk-PCAUXBAG.min.mjs.map → chunk-DAUQA32Q.min.mjs.map} +0 -0
- /package/dist/esm/{chunk-JH6EBXY4.mjs.map → chunk-FQYRVHQT.mjs.map} +0 -0
- /package/dist/esm/{chunk-B5QQ32YY.min.mjs.map → chunk-QCCDJLBH.min.mjs.map} +0 -0
- /package/dist/esm/{chunk-PQCBVQL6.mjs.map → chunk-RIXTQQUU.mjs.map} +0 -0
- /package/dist/esm/{chunk-Z2TZ3KR7.mjs.map → chunk-RPPYCWXW.mjs.map} +0 -0
- /package/dist/esm/{chunk-AKQBDYUO.mjs.map → chunk-T2O72JBW.mjs.map} +0 -0
- /package/dist/esm/{chunk-TVTYDU2D.mjs.map → chunk-VQO4MSEC.mjs.map} +0 -0
- /package/dist/esm/{chunk-ZGMFFK6Y.min.mjs.map → chunk-X7VNAGLR.min.mjs.map} +0 -0
- /package/dist/esm/{chunk-QHLKB47N.min.mjs.map → chunk-YDQW6ETS.min.mjs.map} +0 -0
- /package/dist/esm/{introspection-32BRYKYY.mjs.map → introspection-FGDVYTPP.mjs.map} +0 -0
- /package/dist/esm/{introspection-A72WMWE3.min.mjs.map → introspection-UDWDS6DV.min.mjs.map} +0 -0
|
@@ -1017,19 +1017,6 @@ var openapi = (config) => {
|
|
|
1017
1017
|
};
|
|
1018
1018
|
};
|
|
1019
1019
|
|
|
1020
|
-
// src/utilities/json.ts
|
|
1021
|
-
var parseJSONValue = (data) => {
|
|
1022
|
-
try {
|
|
1023
|
-
if (data?.constructor?.name !== "String") return data;
|
|
1024
|
-
return JSON.parse(data);
|
|
1025
|
-
} catch {
|
|
1026
|
-
return data;
|
|
1027
|
-
}
|
|
1028
|
-
};
|
|
1029
|
-
function parseJSONObject(data) {
|
|
1030
|
-
return Object.fromEntries(Object.entries(data).map(([key, value]) => [key, parseJSONValue(value)]));
|
|
1031
|
-
}
|
|
1032
|
-
|
|
1033
1020
|
// src/server/requests.ts
|
|
1034
1021
|
var Request = class {
|
|
1035
1022
|
ip;
|
|
@@ -1058,8 +1045,10 @@ var Request = class {
|
|
|
1058
1045
|
this.params = params;
|
|
1059
1046
|
this.cookies = cookies;
|
|
1060
1047
|
this.headers = headers;
|
|
1061
|
-
|
|
1062
|
-
|
|
1048
|
+
const hasFiles = Object.keys(files).length > 0;
|
|
1049
|
+
const bodyFields = body && typeof body === "object" && !Array.isArray(body) ? body : {};
|
|
1050
|
+
this.query = query;
|
|
1051
|
+
this.body = hasFiles ? Object.assign({}, bodyFields, files) : body;
|
|
1063
1052
|
}
|
|
1064
1053
|
pipe(stream, opts = {}) {
|
|
1065
1054
|
return new Response({ ...opts, piped: true, body: stream });
|
|
@@ -1105,6 +1094,83 @@ var Response = class {
|
|
|
1105
1094
|
});
|
|
1106
1095
|
}
|
|
1107
1096
|
};
|
|
1097
|
+
if (void 0) {
|
|
1098
|
+
const { describe, expect, test } = void 0;
|
|
1099
|
+
describe("Request", () => {
|
|
1100
|
+
test("preserves adapter-provided query and body values without JSON normalization", () => {
|
|
1101
|
+
const query = {
|
|
1102
|
+
count: "10",
|
|
1103
|
+
active: "true",
|
|
1104
|
+
filter: '{"name":"test"}',
|
|
1105
|
+
quoted: '"value"'
|
|
1106
|
+
};
|
|
1107
|
+
const body = {
|
|
1108
|
+
count: "10",
|
|
1109
|
+
active: "false",
|
|
1110
|
+
payload: '{"nested":true}',
|
|
1111
|
+
quoted: '"value"'
|
|
1112
|
+
};
|
|
1113
|
+
const request = new Request({
|
|
1114
|
+
ip: void 0,
|
|
1115
|
+
body,
|
|
1116
|
+
cookies: {},
|
|
1117
|
+
params: {},
|
|
1118
|
+
query,
|
|
1119
|
+
method: "post",
|
|
1120
|
+
path: "/items",
|
|
1121
|
+
headers: {},
|
|
1122
|
+
files: {}
|
|
1123
|
+
});
|
|
1124
|
+
expect(request.query).toEqual(query);
|
|
1125
|
+
expect(request.body).toEqual(body);
|
|
1126
|
+
});
|
|
1127
|
+
test("continues merging uploaded files into body fields without parsing string fields", () => {
|
|
1128
|
+
const file = {
|
|
1129
|
+
name: "avatar.png",
|
|
1130
|
+
type: "image/png",
|
|
1131
|
+
size: 4,
|
|
1132
|
+
isTruncated: false,
|
|
1133
|
+
data: Buffer.from("file"),
|
|
1134
|
+
duration: 0
|
|
1135
|
+
};
|
|
1136
|
+
const body = { metadata: '{"alt":"avatar"}' };
|
|
1137
|
+
const request = new Request({
|
|
1138
|
+
ip: void 0,
|
|
1139
|
+
body,
|
|
1140
|
+
cookies: {},
|
|
1141
|
+
params: {},
|
|
1142
|
+
query: {},
|
|
1143
|
+
method: "post",
|
|
1144
|
+
path: "/upload",
|
|
1145
|
+
headers: {},
|
|
1146
|
+
files: { avatar: [file] }
|
|
1147
|
+
});
|
|
1148
|
+
expect(request.body).toEqual({ metadata: '{"alt":"avatar"}', avatar: [file] });
|
|
1149
|
+
});
|
|
1150
|
+
test("does not spread non-object body values when uploaded files are present", () => {
|
|
1151
|
+
const file = {
|
|
1152
|
+
name: "avatar.png",
|
|
1153
|
+
type: "image/png",
|
|
1154
|
+
size: 4,
|
|
1155
|
+
isTruncated: false,
|
|
1156
|
+
data: Buffer.from("file"),
|
|
1157
|
+
duration: 0
|
|
1158
|
+
};
|
|
1159
|
+
const request = new Request({
|
|
1160
|
+
ip: void 0,
|
|
1161
|
+
body: "raw text body",
|
|
1162
|
+
cookies: {},
|
|
1163
|
+
params: {},
|
|
1164
|
+
query: {},
|
|
1165
|
+
method: "post",
|
|
1166
|
+
path: "/upload",
|
|
1167
|
+
headers: {},
|
|
1168
|
+
files: { avatar: [file] }
|
|
1169
|
+
});
|
|
1170
|
+
expect(request.body).toEqual({ avatar: [file] });
|
|
1171
|
+
});
|
|
1172
|
+
});
|
|
1173
|
+
}
|
|
1108
1174
|
|
|
1109
1175
|
// src/server/requests-auth-methods/base.ts
|
|
1110
1176
|
var import_node_http2 = require("http2");
|
|
@@ -1402,6 +1468,7 @@ var Server = class {
|
|
|
1402
1468
|
#queue = [];
|
|
1403
1469
|
#routesByKey = /* @__PURE__ */ new Set();
|
|
1404
1470
|
#started = false;
|
|
1471
|
+
#beforeListenHandlers = [];
|
|
1405
1472
|
#notFoundHandler = null;
|
|
1406
1473
|
setup(httpServer, config) {
|
|
1407
1474
|
this.#httpServer = httpServer;
|
|
@@ -1457,6 +1524,11 @@ var Server = class {
|
|
|
1457
1524
|
this.#notFoundHandler = handler;
|
|
1458
1525
|
return this;
|
|
1459
1526
|
}
|
|
1527
|
+
onBeforeListen(handler) {
|
|
1528
|
+
if (this.#started) throw new EquippedError("Cannot add before-listen handler after server has started", {});
|
|
1529
|
+
this.#beforeListenHandlers.push(handler);
|
|
1530
|
+
return this;
|
|
1531
|
+
}
|
|
1460
1532
|
test() {
|
|
1461
1533
|
return (0, import_supertest.default)(this.#httpServer);
|
|
1462
1534
|
}
|
|
@@ -1490,6 +1562,7 @@ var Server = class {
|
|
|
1490
1562
|
});
|
|
1491
1563
|
return await this.handleResponse(res, response);
|
|
1492
1564
|
});
|
|
1565
|
+
for (const handler of this.#beforeListenHandlers) await handler({ httpServer: this.#httpServer, port: config.port });
|
|
1493
1566
|
const started = await this.startServer(config.port);
|
|
1494
1567
|
if (started) Instance.get().log.info(`${instance.id}(${app.name}) service listening on port ${config.port}`);
|
|
1495
1568
|
return started;
|
|
@@ -1641,6 +1714,7 @@ if (void 0) {
|
|
|
1641
1714
|
const testInstanceState = globalThis;
|
|
1642
1715
|
class TestServer extends Server {
|
|
1643
1716
|
handledResponse = null;
|
|
1717
|
+
startedPorts = [];
|
|
1644
1718
|
notFoundHandler = null;
|
|
1645
1719
|
constructor() {
|
|
1646
1720
|
super();
|
|
@@ -1685,7 +1759,8 @@ if (void 0) {
|
|
|
1685
1759
|
registerNotFoundHandler(cb) {
|
|
1686
1760
|
this.notFoundHandler = cb;
|
|
1687
1761
|
}
|
|
1688
|
-
async startServer() {
|
|
1762
|
+
async startServer(port) {
|
|
1763
|
+
this.startedPorts.push(port);
|
|
1689
1764
|
return true;
|
|
1690
1765
|
}
|
|
1691
1766
|
async dispatchNotFound(path) {
|
|
@@ -1696,6 +1771,43 @@ if (void 0) {
|
|
|
1696
1771
|
return { handledResponse: this.handledResponse, rawResponse };
|
|
1697
1772
|
}
|
|
1698
1773
|
}
|
|
1774
|
+
describe("Server before-listen handlers", () => {
|
|
1775
|
+
test("runs before-listen handlers before adapter listen in registration order", async () => {
|
|
1776
|
+
ensureTestInstance();
|
|
1777
|
+
const server = new TestServer();
|
|
1778
|
+
const calls = [];
|
|
1779
|
+
let receivedServer = null;
|
|
1780
|
+
server.onBeforeListen(({ httpServer, port }) => {
|
|
1781
|
+
calls.push(`first:${port}`);
|
|
1782
|
+
receivedServer = httpServer;
|
|
1783
|
+
expect(server.startedPorts).toEqual([]);
|
|
1784
|
+
}).onBeforeListen(({ httpServer, port }) => {
|
|
1785
|
+
calls.push(`second:${port}`);
|
|
1786
|
+
expect(httpServer).toBe(receivedServer);
|
|
1787
|
+
expect(server.startedPorts).toEqual([]);
|
|
1788
|
+
});
|
|
1789
|
+
await server.start();
|
|
1790
|
+
expect(calls).toEqual(["first:0", "second:0"]);
|
|
1791
|
+
expect(receivedServer).toBeInstanceOf(http.Server);
|
|
1792
|
+
expect(server.startedPorts).toEqual([0]);
|
|
1793
|
+
});
|
|
1794
|
+
test("rejects startup when a before-listen handler fails before adapter listen", async () => {
|
|
1795
|
+
ensureTestInstance();
|
|
1796
|
+
const server = new TestServer();
|
|
1797
|
+
server.onBeforeListen(async () => {
|
|
1798
|
+
throw new Error("before-listen failed");
|
|
1799
|
+
});
|
|
1800
|
+
await expect(server.start()).rejects.toThrow("before-listen failed");
|
|
1801
|
+
expect(server.startedPorts).toEqual([]);
|
|
1802
|
+
});
|
|
1803
|
+
test("rejects adding before-listen handlers after server startup", async () => {
|
|
1804
|
+
ensureTestInstance();
|
|
1805
|
+
const server = new TestServer();
|
|
1806
|
+
await server.start();
|
|
1807
|
+
expect(() => server.onBeforeListen(() => {
|
|
1808
|
+
})).toThrow("Cannot add before-listen handler after server has started");
|
|
1809
|
+
});
|
|
1810
|
+
});
|
|
1699
1811
|
describe("Server not-found handler", () => {
|
|
1700
1812
|
test("throws the default Equipped not-found error when no custom handler is set", async () => {
|
|
1701
1813
|
ensureTestInstance();
|