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