apitally 0.12.0 → 0.14.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/README.md +47 -10
- package/dist/adonisjs/index.cjs +41 -0
- package/dist/adonisjs/index.cjs.map +1 -0
- package/dist/adonisjs/index.d.cts +14 -0
- package/dist/adonisjs/index.d.ts +14 -0
- package/dist/adonisjs/index.js +17 -0
- package/dist/adonisjs/index.js.map +1 -0
- package/dist/adonisjs/middleware.cjs +214 -0
- package/dist/adonisjs/middleware.cjs.map +1 -0
- package/dist/adonisjs/middleware.d.cts +21 -0
- package/dist/adonisjs/middleware.d.ts +21 -0
- package/dist/adonisjs/middleware.js +185 -0
- package/dist/adonisjs/middleware.js.map +1 -0
- package/dist/adonisjs/provider.cjs +1083 -0
- package/dist/adonisjs/provider.cjs.map +1 -0
- package/dist/adonisjs/provider.d.cts +28 -0
- package/dist/adonisjs/provider.d.ts +28 -0
- package/dist/adonisjs/provider.js +1057 -0
- package/dist/adonisjs/provider.js.map +1 -0
- package/dist/common/client.cjs +1 -1
- package/dist/common/client.cjs.map +1 -1
- package/dist/common/client.js +1 -1
- package/dist/common/client.js.map +1 -1
- package/dist/common/consumerRegistry.cjs.map +1 -1
- package/dist/common/consumerRegistry.js.map +1 -1
- package/dist/common/logging.cjs.map +1 -1
- package/dist/common/logging.js.map +1 -1
- package/dist/common/packageVersions.cjs.map +1 -1
- package/dist/common/packageVersions.js.map +1 -1
- package/dist/common/paramValidation.cjs.map +1 -1
- package/dist/common/paramValidation.js.map +1 -1
- package/dist/common/requestCounter.cjs.map +1 -1
- package/dist/common/requestCounter.js.map +1 -1
- package/dist/common/requestLogger.cjs.map +1 -1
- package/dist/common/requestLogger.js.map +1 -1
- package/dist/common/sentry.cjs.map +1 -1
- package/dist/common/sentry.js.map +1 -1
- package/dist/common/serverErrorCounter.cjs.map +1 -1
- package/dist/common/serverErrorCounter.js.map +1 -1
- package/dist/common/tempGzipFile.cjs.map +1 -1
- package/dist/common/tempGzipFile.js.map +1 -1
- package/dist/common/types.cjs.map +1 -1
- package/dist/common/types.d.cts +0 -1
- package/dist/common/types.d.ts +0 -1
- package/dist/common/utils.cjs +48 -0
- package/dist/common/utils.cjs.map +1 -0
- package/dist/common/utils.d.cts +5 -0
- package/dist/common/utils.d.ts +5 -0
- package/dist/common/utils.js +25 -0
- package/dist/common/utils.js.map +1 -0
- package/dist/common/validationErrorCounter.cjs.map +1 -1
- package/dist/common/validationErrorCounter.js.map +1 -1
- package/dist/express/index.cjs +91 -25
- package/dist/express/index.cjs.map +1 -1
- package/dist/express/index.js +91 -25
- package/dist/express/index.js.map +1 -1
- package/dist/express/middleware.cjs +91 -25
- package/dist/express/middleware.cjs.map +1 -1
- package/dist/express/middleware.js +91 -25
- package/dist/express/middleware.js.map +1 -1
- package/dist/express/utils.cjs +59 -16
- package/dist/express/utils.cjs.map +1 -1
- package/dist/express/utils.d.cts +11 -2
- package/dist/express/utils.d.ts +11 -2
- package/dist/express/utils.js +56 -15
- package/dist/express/utils.js.map +1 -1
- package/dist/fastify/index.cjs +22 -6
- package/dist/fastify/index.cjs.map +1 -1
- package/dist/fastify/index.js +22 -6
- package/dist/fastify/index.js.map +1 -1
- package/dist/fastify/plugin.cjs +22 -6
- package/dist/fastify/plugin.cjs.map +1 -1
- package/dist/fastify/plugin.js +22 -6
- package/dist/fastify/plugin.js.map +1 -1
- package/dist/hono/index.cjs +21 -2
- package/dist/hono/index.cjs.map +1 -1
- package/dist/hono/index.js +21 -2
- package/dist/hono/index.js.map +1 -1
- package/dist/hono/middleware.cjs +21 -2
- package/dist/hono/middleware.cjs.map +1 -1
- package/dist/hono/middleware.js +21 -2
- package/dist/hono/middleware.js.map +1 -1
- package/dist/koa/index.cjs +3 -3
- package/dist/koa/index.cjs.map +1 -1
- package/dist/koa/index.js +3 -3
- package/dist/koa/index.js.map +1 -1
- package/dist/koa/middleware.cjs +3 -3
- package/dist/koa/middleware.cjs.map +1 -1
- package/dist/koa/middleware.js +3 -3
- package/dist/koa/middleware.js.map +1 -1
- package/dist/nestjs/index.cjs +91 -25
- package/dist/nestjs/index.cjs.map +1 -1
- package/dist/nestjs/index.js +91 -25
- package/dist/nestjs/index.js.map +1 -1
- package/package.json +71 -52
|
@@ -814,7 +814,7 @@ var _ApitallyClient = class _ApitallyClient {
|
|
|
814
814
|
throw new Error("Apitally client is already initialized");
|
|
815
815
|
}
|
|
816
816
|
if (!isValidClientId(clientId)) {
|
|
817
|
-
throw new Error(`Invalid client ID '${clientId}' (expecting
|
|
817
|
+
throw new Error(`Invalid Apitally client ID '${clientId}' (expecting hexadecimal UUID format)`);
|
|
818
818
|
}
|
|
819
819
|
if (!isValidEnv(env)) {
|
|
820
820
|
throw new Error(`Invalid env '${env}' (expecting 1-32 alphanumeric lowercase characters and hyphens only)`);
|
|
@@ -1070,6 +1070,25 @@ function getPackageVersion(name) {
|
|
|
1070
1070
|
}
|
|
1071
1071
|
__name(getPackageVersion, "getPackageVersion");
|
|
1072
1072
|
|
|
1073
|
+
// src/common/utils.ts
|
|
1074
|
+
function parseContentLength(contentLength) {
|
|
1075
|
+
if (contentLength === void 0 || contentLength === null) {
|
|
1076
|
+
return void 0;
|
|
1077
|
+
}
|
|
1078
|
+
if (typeof contentLength === "number") {
|
|
1079
|
+
return contentLength;
|
|
1080
|
+
}
|
|
1081
|
+
if (typeof contentLength === "string") {
|
|
1082
|
+
const parsed = parseInt(contentLength);
|
|
1083
|
+
return isNaN(parsed) ? void 0 : parsed;
|
|
1084
|
+
}
|
|
1085
|
+
if (Array.isArray(contentLength)) {
|
|
1086
|
+
return parseContentLength(contentLength[0]);
|
|
1087
|
+
}
|
|
1088
|
+
return void 0;
|
|
1089
|
+
}
|
|
1090
|
+
__name(parseContentLength, "parseContentLength");
|
|
1091
|
+
|
|
1073
1092
|
// src/express/utils.js
|
|
1074
1093
|
var regExpToParseExpressPathRegExp = /^\/\^\\?\/?(?:(:?[\w\\.-]*(?:\\\/:?[\w\\.-]*)*)|(\(\?:\\?\/?\([^)]+\)\)))\\\/.*/;
|
|
1075
1094
|
var regExpToReplaceExpressPathRegExpParams = /\(\?:\\?\/?\([^)]+\)\)/;
|
|
@@ -1081,6 +1100,29 @@ var STACK_ITEM_VALID_NAMES = [
|
|
|
1081
1100
|
"bound dispatch",
|
|
1082
1101
|
"mounted_app"
|
|
1083
1102
|
];
|
|
1103
|
+
var getRouterInfo = /* @__PURE__ */ __name(function(app) {
|
|
1104
|
+
var _a2, _b;
|
|
1105
|
+
if (app.stack) {
|
|
1106
|
+
return {
|
|
1107
|
+
stack: app.stack,
|
|
1108
|
+
version: "v4"
|
|
1109
|
+
};
|
|
1110
|
+
} else if ((_a2 = app._router) == null ? void 0 : _a2.stack) {
|
|
1111
|
+
return {
|
|
1112
|
+
stack: app._router.stack,
|
|
1113
|
+
version: "v4"
|
|
1114
|
+
};
|
|
1115
|
+
} else if ((_b = app.router) == null ? void 0 : _b.stack) {
|
|
1116
|
+
return {
|
|
1117
|
+
stack: app.router.stack,
|
|
1118
|
+
version: "v5"
|
|
1119
|
+
};
|
|
1120
|
+
}
|
|
1121
|
+
return {
|
|
1122
|
+
stack: null,
|
|
1123
|
+
version: "v4"
|
|
1124
|
+
};
|
|
1125
|
+
}, "getRouterInfo");
|
|
1084
1126
|
var getRouteMethods = /* @__PURE__ */ __name(function(route) {
|
|
1085
1127
|
let methods = Object.keys(route.methods);
|
|
1086
1128
|
methods = methods.filter((method) => method !== "_all");
|
|
@@ -1113,12 +1155,12 @@ var parseExpressRoute = /* @__PURE__ */ __name(function(route, basePath) {
|
|
|
1113
1155
|
});
|
|
1114
1156
|
return endpoints;
|
|
1115
1157
|
}, "parseExpressRoute");
|
|
1116
|
-
var
|
|
1158
|
+
var parseExpressPathRegExp = /* @__PURE__ */ __name(function(expressPathRegExp, keys) {
|
|
1117
1159
|
let parsedRegExp = expressPathRegExp.toString();
|
|
1118
1160
|
let expressPathRegExpExec = regExpToParseExpressPathRegExp.exec(parsedRegExp);
|
|
1119
1161
|
let paramIndex = 0;
|
|
1120
1162
|
while (hasParams(parsedRegExp)) {
|
|
1121
|
-
const paramName =
|
|
1163
|
+
const paramName = keys[paramIndex].name;
|
|
1122
1164
|
const paramId = `:${paramName}`;
|
|
1123
1165
|
parsedRegExp = parsedRegExp.replace(regExpToReplaceExpressPathRegExpParams, (str) => {
|
|
1124
1166
|
if (str.startsWith("(?:\\/")) {
|
|
@@ -1131,11 +1173,19 @@ var parseExpressPath = /* @__PURE__ */ __name(function(expressPathRegExp, params
|
|
|
1131
1173
|
if (parsedRegExp !== expressPathRegExp.toString()) {
|
|
1132
1174
|
expressPathRegExpExec = regExpToParseExpressPathRegExp.exec(parsedRegExp);
|
|
1133
1175
|
}
|
|
1134
|
-
|
|
1135
|
-
|
|
1176
|
+
return expressPathRegExpExec[1].replace(/\\\//g, "/");
|
|
1177
|
+
}, "parseExpressPathRegExp");
|
|
1178
|
+
var parseExpressPath = /* @__PURE__ */ __name(function(expressPath, params) {
|
|
1179
|
+
let result = expressPath;
|
|
1180
|
+
for (const [paramName, paramValue] of Object.entries(params)) {
|
|
1181
|
+
result = result.replace(paramValue, `:${paramName}`);
|
|
1182
|
+
}
|
|
1183
|
+
return result;
|
|
1136
1184
|
}, "parseExpressPath");
|
|
1137
1185
|
var parseEndpoints = /* @__PURE__ */ __name(function(app, basePath, endpoints) {
|
|
1138
|
-
const
|
|
1186
|
+
const routerInfo = getRouterInfo(app);
|
|
1187
|
+
const stack = routerInfo.stack;
|
|
1188
|
+
const version = routerInfo.version;
|
|
1139
1189
|
endpoints = endpoints || [];
|
|
1140
1190
|
basePath = basePath || "";
|
|
1141
1191
|
if (!stack) {
|
|
@@ -1149,7 +1199,7 @@ var parseEndpoints = /* @__PURE__ */ __name(function(app, basePath, endpoints) {
|
|
|
1149
1199
|
]);
|
|
1150
1200
|
}
|
|
1151
1201
|
} else {
|
|
1152
|
-
endpoints = parseStack(stack, basePath, endpoints);
|
|
1202
|
+
endpoints = parseStack(stack, basePath, endpoints, version);
|
|
1153
1203
|
}
|
|
1154
1204
|
return endpoints;
|
|
1155
1205
|
}, "parseEndpoints");
|
|
@@ -1165,20 +1215,28 @@ var addEndpoints = /* @__PURE__ */ __name(function(currentEndpoints, endpointsTo
|
|
|
1165
1215
|
});
|
|
1166
1216
|
return currentEndpoints;
|
|
1167
1217
|
}, "addEndpoints");
|
|
1168
|
-
var parseStack = /* @__PURE__ */ __name(function(stack, basePath, endpoints) {
|
|
1218
|
+
var parseStack = /* @__PURE__ */ __name(function(stack, basePath, endpoints, version) {
|
|
1169
1219
|
stack.forEach((stackItem) => {
|
|
1170
1220
|
if (stackItem.route) {
|
|
1171
1221
|
const newEndpoints = parseExpressRoute(stackItem.route, basePath);
|
|
1172
1222
|
endpoints = addEndpoints(endpoints, newEndpoints);
|
|
1173
1223
|
} else if (STACK_ITEM_VALID_NAMES.includes(stackItem.name)) {
|
|
1174
|
-
const isExpressPathRegexp = regExpToParseExpressPathRegExp.test(stackItem.regexp);
|
|
1175
1224
|
let newBasePath = basePath;
|
|
1176
|
-
if (
|
|
1177
|
-
const
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1225
|
+
if (version === "v4") {
|
|
1226
|
+
const isExpressPathRegExp = regExpToParseExpressPathRegExp.test(stackItem.regexp);
|
|
1227
|
+
if (isExpressPathRegExp) {
|
|
1228
|
+
const parsedPath = parseExpressPathRegExp(stackItem.regexp, stackItem.keys);
|
|
1229
|
+
newBasePath += `/${parsedPath}`;
|
|
1230
|
+
} else if (!stackItem.path && stackItem.regexp && stackItem.regexp.toString() !== EXPRESS_ROOT_PATH_REGEXP_VALUE) {
|
|
1231
|
+
const regExpPath = `RegExp(${stackItem.regexp})`;
|
|
1232
|
+
newBasePath += `/${regExpPath}`;
|
|
1233
|
+
}
|
|
1234
|
+
} else if (version === "v5") {
|
|
1235
|
+
if (!stackItem.path) {
|
|
1236
|
+
return;
|
|
1237
|
+
} else if (stackItem.path !== "/") {
|
|
1238
|
+
newBasePath += stackItem.path.startsWith("/") ? stackItem.path : `/${stackItem.path}`;
|
|
1239
|
+
}
|
|
1182
1240
|
}
|
|
1183
1241
|
endpoints = parseEndpoints(stackItem.handle, newBasePath, endpoints);
|
|
1184
1242
|
}
|
|
@@ -1229,12 +1287,14 @@ var getMiddleware = /* @__PURE__ */ __name((app, client) => {
|
|
|
1229
1287
|
}
|
|
1230
1288
|
return originalSend.call(res, body);
|
|
1231
1289
|
};
|
|
1232
|
-
res.
|
|
1290
|
+
res.once("finish", () => {
|
|
1233
1291
|
try {
|
|
1234
1292
|
const responseTime = import_perf_hooks.performance.now() - startTime;
|
|
1235
1293
|
const path = getRoutePath(req);
|
|
1236
1294
|
const consumer = getConsumer(req);
|
|
1237
1295
|
client.consumerRegistry.addOrUpdateConsumer(consumer);
|
|
1296
|
+
const requestSize = parseContentLength(req.get("content-length"));
|
|
1297
|
+
const responseSize = parseContentLength(res.get("content-length"));
|
|
1238
1298
|
if (path) {
|
|
1239
1299
|
client.requestCounter.addRequest({
|
|
1240
1300
|
consumer: consumer == null ? void 0 : consumer.identifier,
|
|
@@ -1242,8 +1302,8 @@ var getMiddleware = /* @__PURE__ */ __name((app, client) => {
|
|
|
1242
1302
|
path,
|
|
1243
1303
|
statusCode: res.statusCode,
|
|
1244
1304
|
responseTime,
|
|
1245
|
-
requestSize
|
|
1246
|
-
responseSize
|
|
1305
|
+
requestSize,
|
|
1306
|
+
responseSize
|
|
1247
1307
|
});
|
|
1248
1308
|
if ((res.statusCode === 400 || res.statusCode === 422) && res.locals.body) {
|
|
1249
1309
|
let jsonBody;
|
|
@@ -1291,14 +1351,14 @@ var getMiddleware = /* @__PURE__ */ __name((app, client) => {
|
|
|
1291
1351
|
path,
|
|
1292
1352
|
url: `${req.protocol}://${req.host}${req.originalUrl}`,
|
|
1293
1353
|
headers: convertHeaders(req.headers),
|
|
1294
|
-
size:
|
|
1354
|
+
size: requestSize,
|
|
1295
1355
|
consumer: consumer == null ? void 0 : consumer.identifier,
|
|
1296
1356
|
body: convertBody(req.body, req.get("content-type"))
|
|
1297
1357
|
}, {
|
|
1298
1358
|
statusCode: res.statusCode,
|
|
1299
1359
|
responseTime: responseTime / 1e3,
|
|
1300
1360
|
headers: convertHeaders(res.getHeaders()),
|
|
1301
|
-
size:
|
|
1361
|
+
size: responseSize,
|
|
1302
1362
|
body: convertBody(res.locals.body, res.get("content-type"))
|
|
1303
1363
|
}, res.locals.serverError);
|
|
1304
1364
|
}
|
|
@@ -1326,8 +1386,11 @@ var getRoutePath = /* @__PURE__ */ __name((req) => {
|
|
|
1326
1386
|
return;
|
|
1327
1387
|
}
|
|
1328
1388
|
if (req.baseUrl) {
|
|
1329
|
-
const
|
|
1330
|
-
|
|
1389
|
+
const routerInfo = getRouterInfo(req.app);
|
|
1390
|
+
if (routerInfo.stack) {
|
|
1391
|
+
const routerPath = getRouterPath(routerInfo.stack, req.baseUrl);
|
|
1392
|
+
return req.route.path === "/" ? routerPath : routerPath + req.route.path;
|
|
1393
|
+
}
|
|
1331
1394
|
}
|
|
1332
1395
|
return req.route.path;
|
|
1333
1396
|
}, "getRoutePath");
|
|
@@ -1337,12 +1400,15 @@ var getRouterPath = /* @__PURE__ */ __name((stack, baseUrl) => {
|
|
|
1337
1400
|
while (stack && stack.length > 0) {
|
|
1338
1401
|
const routerLayer = stack.find((layer) => {
|
|
1339
1402
|
var _a3;
|
|
1340
|
-
return layer.name === "router" && layer.path && ((_a3 = layer.regexp) == null ? void 0 : _a3.test(baseUrl));
|
|
1403
|
+
return layer.name === "router" && layer.path && (baseUrl.startsWith(layer.path) || ((_a3 = layer.regexp) == null ? void 0 : _a3.test(baseUrl)));
|
|
1341
1404
|
});
|
|
1342
1405
|
if (routerLayer) {
|
|
1343
|
-
if (routerLayer.keys.length > 0) {
|
|
1344
|
-
const parsedPath =
|
|
1406
|
+
if (routerLayer.regexp && routerLayer.keys && routerLayer.keys.length > 0) {
|
|
1407
|
+
const parsedPath = parseExpressPathRegExp(routerLayer.regexp, routerLayer.keys);
|
|
1345
1408
|
routerPaths.push("/" + parsedPath);
|
|
1409
|
+
} else if (routerLayer.params && Object.keys(routerLayer.params).length > 0) {
|
|
1410
|
+
const parsedPath = parseExpressPath(routerLayer.path, routerLayer.params);
|
|
1411
|
+
routerPaths.push(parsedPath);
|
|
1346
1412
|
} else {
|
|
1347
1413
|
routerPaths.push(routerLayer.path);
|
|
1348
1414
|
}
|