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
package/dist/express/index.js
CHANGED
|
@@ -788,7 +788,7 @@ var _ApitallyClient = class _ApitallyClient {
|
|
|
788
788
|
throw new Error("Apitally client is already initialized");
|
|
789
789
|
}
|
|
790
790
|
if (!isValidClientId(clientId)) {
|
|
791
|
-
throw new Error(`Invalid client ID '${clientId}' (expecting
|
|
791
|
+
throw new Error(`Invalid Apitally client ID '${clientId}' (expecting hexadecimal UUID format)`);
|
|
792
792
|
}
|
|
793
793
|
if (!isValidEnv(env)) {
|
|
794
794
|
throw new Error(`Invalid env '${env}' (expecting 1-32 alphanumeric lowercase characters and hyphens only)`);
|
|
@@ -1043,6 +1043,25 @@ function getPackageVersion(name) {
|
|
|
1043
1043
|
}
|
|
1044
1044
|
__name(getPackageVersion, "getPackageVersion");
|
|
1045
1045
|
|
|
1046
|
+
// src/common/utils.ts
|
|
1047
|
+
function parseContentLength(contentLength) {
|
|
1048
|
+
if (contentLength === void 0 || contentLength === null) {
|
|
1049
|
+
return void 0;
|
|
1050
|
+
}
|
|
1051
|
+
if (typeof contentLength === "number") {
|
|
1052
|
+
return contentLength;
|
|
1053
|
+
}
|
|
1054
|
+
if (typeof contentLength === "string") {
|
|
1055
|
+
const parsed = parseInt(contentLength);
|
|
1056
|
+
return isNaN(parsed) ? void 0 : parsed;
|
|
1057
|
+
}
|
|
1058
|
+
if (Array.isArray(contentLength)) {
|
|
1059
|
+
return parseContentLength(contentLength[0]);
|
|
1060
|
+
}
|
|
1061
|
+
return void 0;
|
|
1062
|
+
}
|
|
1063
|
+
__name(parseContentLength, "parseContentLength");
|
|
1064
|
+
|
|
1046
1065
|
// src/express/utils.js
|
|
1047
1066
|
var regExpToParseExpressPathRegExp = /^\/\^\\?\/?(?:(:?[\w\\.-]*(?:\\\/:?[\w\\.-]*)*)|(\(\?:\\?\/?\([^)]+\)\)))\\\/.*/;
|
|
1048
1067
|
var regExpToReplaceExpressPathRegExpParams = /\(\?:\\?\/?\([^)]+\)\)/;
|
|
@@ -1054,6 +1073,29 @@ var STACK_ITEM_VALID_NAMES = [
|
|
|
1054
1073
|
"bound dispatch",
|
|
1055
1074
|
"mounted_app"
|
|
1056
1075
|
];
|
|
1076
|
+
var getRouterInfo = /* @__PURE__ */ __name(function(app) {
|
|
1077
|
+
var _a2, _b;
|
|
1078
|
+
if (app.stack) {
|
|
1079
|
+
return {
|
|
1080
|
+
stack: app.stack,
|
|
1081
|
+
version: "v4"
|
|
1082
|
+
};
|
|
1083
|
+
} else if ((_a2 = app._router) == null ? void 0 : _a2.stack) {
|
|
1084
|
+
return {
|
|
1085
|
+
stack: app._router.stack,
|
|
1086
|
+
version: "v4"
|
|
1087
|
+
};
|
|
1088
|
+
} else if ((_b = app.router) == null ? void 0 : _b.stack) {
|
|
1089
|
+
return {
|
|
1090
|
+
stack: app.router.stack,
|
|
1091
|
+
version: "v5"
|
|
1092
|
+
};
|
|
1093
|
+
}
|
|
1094
|
+
return {
|
|
1095
|
+
stack: null,
|
|
1096
|
+
version: "v4"
|
|
1097
|
+
};
|
|
1098
|
+
}, "getRouterInfo");
|
|
1057
1099
|
var getRouteMethods = /* @__PURE__ */ __name(function(route) {
|
|
1058
1100
|
let methods = Object.keys(route.methods);
|
|
1059
1101
|
methods = methods.filter((method) => method !== "_all");
|
|
@@ -1086,12 +1128,12 @@ var parseExpressRoute = /* @__PURE__ */ __name(function(route, basePath) {
|
|
|
1086
1128
|
});
|
|
1087
1129
|
return endpoints;
|
|
1088
1130
|
}, "parseExpressRoute");
|
|
1089
|
-
var
|
|
1131
|
+
var parseExpressPathRegExp = /* @__PURE__ */ __name(function(expressPathRegExp, keys) {
|
|
1090
1132
|
let parsedRegExp = expressPathRegExp.toString();
|
|
1091
1133
|
let expressPathRegExpExec = regExpToParseExpressPathRegExp.exec(parsedRegExp);
|
|
1092
1134
|
let paramIndex = 0;
|
|
1093
1135
|
while (hasParams(parsedRegExp)) {
|
|
1094
|
-
const paramName =
|
|
1136
|
+
const paramName = keys[paramIndex].name;
|
|
1095
1137
|
const paramId = `:${paramName}`;
|
|
1096
1138
|
parsedRegExp = parsedRegExp.replace(regExpToReplaceExpressPathRegExpParams, (str) => {
|
|
1097
1139
|
if (str.startsWith("(?:\\/")) {
|
|
@@ -1104,11 +1146,19 @@ var parseExpressPath = /* @__PURE__ */ __name(function(expressPathRegExp, params
|
|
|
1104
1146
|
if (parsedRegExp !== expressPathRegExp.toString()) {
|
|
1105
1147
|
expressPathRegExpExec = regExpToParseExpressPathRegExp.exec(parsedRegExp);
|
|
1106
1148
|
}
|
|
1107
|
-
|
|
1108
|
-
|
|
1149
|
+
return expressPathRegExpExec[1].replace(/\\\//g, "/");
|
|
1150
|
+
}, "parseExpressPathRegExp");
|
|
1151
|
+
var parseExpressPath = /* @__PURE__ */ __name(function(expressPath, params) {
|
|
1152
|
+
let result = expressPath;
|
|
1153
|
+
for (const [paramName, paramValue] of Object.entries(params)) {
|
|
1154
|
+
result = result.replace(paramValue, `:${paramName}`);
|
|
1155
|
+
}
|
|
1156
|
+
return result;
|
|
1109
1157
|
}, "parseExpressPath");
|
|
1110
1158
|
var parseEndpoints = /* @__PURE__ */ __name(function(app, basePath, endpoints) {
|
|
1111
|
-
const
|
|
1159
|
+
const routerInfo = getRouterInfo(app);
|
|
1160
|
+
const stack = routerInfo.stack;
|
|
1161
|
+
const version = routerInfo.version;
|
|
1112
1162
|
endpoints = endpoints || [];
|
|
1113
1163
|
basePath = basePath || "";
|
|
1114
1164
|
if (!stack) {
|
|
@@ -1122,7 +1172,7 @@ var parseEndpoints = /* @__PURE__ */ __name(function(app, basePath, endpoints) {
|
|
|
1122
1172
|
]);
|
|
1123
1173
|
}
|
|
1124
1174
|
} else {
|
|
1125
|
-
endpoints = parseStack(stack, basePath, endpoints);
|
|
1175
|
+
endpoints = parseStack(stack, basePath, endpoints, version);
|
|
1126
1176
|
}
|
|
1127
1177
|
return endpoints;
|
|
1128
1178
|
}, "parseEndpoints");
|
|
@@ -1138,20 +1188,28 @@ var addEndpoints = /* @__PURE__ */ __name(function(currentEndpoints, endpointsTo
|
|
|
1138
1188
|
});
|
|
1139
1189
|
return currentEndpoints;
|
|
1140
1190
|
}, "addEndpoints");
|
|
1141
|
-
var parseStack = /* @__PURE__ */ __name(function(stack, basePath, endpoints) {
|
|
1191
|
+
var parseStack = /* @__PURE__ */ __name(function(stack, basePath, endpoints, version) {
|
|
1142
1192
|
stack.forEach((stackItem) => {
|
|
1143
1193
|
if (stackItem.route) {
|
|
1144
1194
|
const newEndpoints = parseExpressRoute(stackItem.route, basePath);
|
|
1145
1195
|
endpoints = addEndpoints(endpoints, newEndpoints);
|
|
1146
1196
|
} else if (STACK_ITEM_VALID_NAMES.includes(stackItem.name)) {
|
|
1147
|
-
const isExpressPathRegexp = regExpToParseExpressPathRegExp.test(stackItem.regexp);
|
|
1148
1197
|
let newBasePath = basePath;
|
|
1149
|
-
if (
|
|
1150
|
-
const
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1198
|
+
if (version === "v4") {
|
|
1199
|
+
const isExpressPathRegExp = regExpToParseExpressPathRegExp.test(stackItem.regexp);
|
|
1200
|
+
if (isExpressPathRegExp) {
|
|
1201
|
+
const parsedPath = parseExpressPathRegExp(stackItem.regexp, stackItem.keys);
|
|
1202
|
+
newBasePath += `/${parsedPath}`;
|
|
1203
|
+
} else if (!stackItem.path && stackItem.regexp && stackItem.regexp.toString() !== EXPRESS_ROOT_PATH_REGEXP_VALUE) {
|
|
1204
|
+
const regExpPath = `RegExp(${stackItem.regexp})`;
|
|
1205
|
+
newBasePath += `/${regExpPath}`;
|
|
1206
|
+
}
|
|
1207
|
+
} else if (version === "v5") {
|
|
1208
|
+
if (!stackItem.path) {
|
|
1209
|
+
return;
|
|
1210
|
+
} else if (stackItem.path !== "/") {
|
|
1211
|
+
newBasePath += stackItem.path.startsWith("/") ? stackItem.path : `/${stackItem.path}`;
|
|
1212
|
+
}
|
|
1155
1213
|
}
|
|
1156
1214
|
endpoints = parseEndpoints(stackItem.handle, newBasePath, endpoints);
|
|
1157
1215
|
}
|
|
@@ -1202,12 +1260,14 @@ var getMiddleware = /* @__PURE__ */ __name((app, client) => {
|
|
|
1202
1260
|
}
|
|
1203
1261
|
return originalSend.call(res, body);
|
|
1204
1262
|
};
|
|
1205
|
-
res.
|
|
1263
|
+
res.once("finish", () => {
|
|
1206
1264
|
try {
|
|
1207
1265
|
const responseTime = performance.now() - startTime;
|
|
1208
1266
|
const path = getRoutePath(req);
|
|
1209
1267
|
const consumer = getConsumer(req);
|
|
1210
1268
|
client.consumerRegistry.addOrUpdateConsumer(consumer);
|
|
1269
|
+
const requestSize = parseContentLength(req.get("content-length"));
|
|
1270
|
+
const responseSize = parseContentLength(res.get("content-length"));
|
|
1211
1271
|
if (path) {
|
|
1212
1272
|
client.requestCounter.addRequest({
|
|
1213
1273
|
consumer: consumer == null ? void 0 : consumer.identifier,
|
|
@@ -1215,8 +1275,8 @@ var getMiddleware = /* @__PURE__ */ __name((app, client) => {
|
|
|
1215
1275
|
path,
|
|
1216
1276
|
statusCode: res.statusCode,
|
|
1217
1277
|
responseTime,
|
|
1218
|
-
requestSize
|
|
1219
|
-
responseSize
|
|
1278
|
+
requestSize,
|
|
1279
|
+
responseSize
|
|
1220
1280
|
});
|
|
1221
1281
|
if ((res.statusCode === 400 || res.statusCode === 422) && res.locals.body) {
|
|
1222
1282
|
let jsonBody;
|
|
@@ -1264,14 +1324,14 @@ var getMiddleware = /* @__PURE__ */ __name((app, client) => {
|
|
|
1264
1324
|
path,
|
|
1265
1325
|
url: `${req.protocol}://${req.host}${req.originalUrl}`,
|
|
1266
1326
|
headers: convertHeaders(req.headers),
|
|
1267
|
-
size:
|
|
1327
|
+
size: requestSize,
|
|
1268
1328
|
consumer: consumer == null ? void 0 : consumer.identifier,
|
|
1269
1329
|
body: convertBody(req.body, req.get("content-type"))
|
|
1270
1330
|
}, {
|
|
1271
1331
|
statusCode: res.statusCode,
|
|
1272
1332
|
responseTime: responseTime / 1e3,
|
|
1273
1333
|
headers: convertHeaders(res.getHeaders()),
|
|
1274
|
-
size:
|
|
1334
|
+
size: responseSize,
|
|
1275
1335
|
body: convertBody(res.locals.body, res.get("content-type"))
|
|
1276
1336
|
}, res.locals.serverError);
|
|
1277
1337
|
}
|
|
@@ -1299,8 +1359,11 @@ var getRoutePath = /* @__PURE__ */ __name((req) => {
|
|
|
1299
1359
|
return;
|
|
1300
1360
|
}
|
|
1301
1361
|
if (req.baseUrl) {
|
|
1302
|
-
const
|
|
1303
|
-
|
|
1362
|
+
const routerInfo = getRouterInfo(req.app);
|
|
1363
|
+
if (routerInfo.stack) {
|
|
1364
|
+
const routerPath = getRouterPath(routerInfo.stack, req.baseUrl);
|
|
1365
|
+
return req.route.path === "/" ? routerPath : routerPath + req.route.path;
|
|
1366
|
+
}
|
|
1304
1367
|
}
|
|
1305
1368
|
return req.route.path;
|
|
1306
1369
|
}, "getRoutePath");
|
|
@@ -1310,12 +1373,15 @@ var getRouterPath = /* @__PURE__ */ __name((stack, baseUrl) => {
|
|
|
1310
1373
|
while (stack && stack.length > 0) {
|
|
1311
1374
|
const routerLayer = stack.find((layer) => {
|
|
1312
1375
|
var _a3;
|
|
1313
|
-
return layer.name === "router" && layer.path && ((_a3 = layer.regexp) == null ? void 0 : _a3.test(baseUrl));
|
|
1376
|
+
return layer.name === "router" && layer.path && (baseUrl.startsWith(layer.path) || ((_a3 = layer.regexp) == null ? void 0 : _a3.test(baseUrl)));
|
|
1314
1377
|
});
|
|
1315
1378
|
if (routerLayer) {
|
|
1316
|
-
if (routerLayer.keys.length > 0) {
|
|
1317
|
-
const parsedPath =
|
|
1379
|
+
if (routerLayer.regexp && routerLayer.keys && routerLayer.keys.length > 0) {
|
|
1380
|
+
const parsedPath = parseExpressPathRegExp(routerLayer.regexp, routerLayer.keys);
|
|
1318
1381
|
routerPaths.push("/" + parsedPath);
|
|
1382
|
+
} else if (routerLayer.params && Object.keys(routerLayer.params).length > 0) {
|
|
1383
|
+
const parsedPath = parseExpressPath(routerLayer.path, routerLayer.params);
|
|
1384
|
+
routerPaths.push(parsedPath);
|
|
1319
1385
|
} else {
|
|
1320
1386
|
routerPaths.push(routerLayer.path);
|
|
1321
1387
|
}
|