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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["validationErrorCounter.ts"],"sourcesContent":["import { createHash } from \"crypto\";\n\nimport {\n ConsumerMethodPath,\n ValidationError,\n ValidationErrorsItem,\n} from \"./types.js\";\n\nexport default class ValidationErrorCounter {\n private errorCounts: Map<string, number>;\n private errorDetails: Map<string, ConsumerMethodPath & ValidationError>;\n\n constructor() {\n this.errorCounts = new Map();\n this.errorDetails = new Map();\n }\n\n public addValidationError(\n validationError: ConsumerMethodPath & ValidationError,\n ) {\n const key = this.getKey(validationError);\n if (!this.errorDetails.has(key)) {\n this.errorDetails.set(key, validationError);\n }\n this.errorCounts.set(key, (this.errorCounts.get(key) || 0) + 1);\n }\n\n public getAndResetValidationErrors() {\n const data: Array<ValidationErrorsItem> = [];\n this.errorCounts.forEach((count, key) => {\n const validationError = this.errorDetails.get(key);\n if (validationError) {\n data.push({\n consumer: validationError.consumer || null,\n method: validationError.method,\n path: validationError.path,\n loc: validationError.loc.split(\".\"),\n msg: validationError.msg,\n type: validationError.type,\n error_count: count,\n });\n }\n });\n this.errorCounts.clear();\n this.errorDetails.clear();\n return data;\n }\n\n private getKey(validationError: ConsumerMethodPath & ValidationError) {\n const hashInput = [\n validationError.consumer || \"\",\n validationError.method.toUpperCase(),\n validationError.path,\n validationError.loc,\n validationError.msg.trim(),\n validationError.type,\n ].join(\"|\");\n return createHash(\"md5\").update(hashInput).digest(\"hex\");\n }\n}\n"],"mappings":";;;;AAAA,SAASA,kBAAkB;AAQ3B,IAAqBC,0BAArB,MAAqBA,wBAAAA;EACXC;EACAC;
|
|
1
|
+
{"version":3,"sources":["../../src/common/validationErrorCounter.ts"],"sourcesContent":["import { createHash } from \"crypto\";\n\nimport {\n ConsumerMethodPath,\n ValidationError,\n ValidationErrorsItem,\n} from \"./types.js\";\n\nexport default class ValidationErrorCounter {\n private errorCounts: Map<string, number>;\n private errorDetails: Map<string, ConsumerMethodPath & ValidationError>;\n\n constructor() {\n this.errorCounts = new Map();\n this.errorDetails = new Map();\n }\n\n public addValidationError(\n validationError: ConsumerMethodPath & ValidationError,\n ) {\n const key = this.getKey(validationError);\n if (!this.errorDetails.has(key)) {\n this.errorDetails.set(key, validationError);\n }\n this.errorCounts.set(key, (this.errorCounts.get(key) || 0) + 1);\n }\n\n public getAndResetValidationErrors() {\n const data: Array<ValidationErrorsItem> = [];\n this.errorCounts.forEach((count, key) => {\n const validationError = this.errorDetails.get(key);\n if (validationError) {\n data.push({\n consumer: validationError.consumer || null,\n method: validationError.method,\n path: validationError.path,\n loc: validationError.loc.split(\".\"),\n msg: validationError.msg,\n type: validationError.type,\n error_count: count,\n });\n }\n });\n this.errorCounts.clear();\n this.errorDetails.clear();\n return data;\n }\n\n private getKey(validationError: ConsumerMethodPath & ValidationError) {\n const hashInput = [\n validationError.consumer || \"\",\n validationError.method.toUpperCase(),\n validationError.path,\n validationError.loc,\n validationError.msg.trim(),\n validationError.type,\n ].join(\"|\");\n return createHash(\"md5\").update(hashInput).digest(\"hex\");\n }\n}\n"],"mappings":";;;;AAAA,SAASA,kBAAkB;AAQ3B,IAAqBC,0BAArB,MAAqBA,wBAAAA;EACXC;EACAC;EAER,cAAc;AACZ,SAAKD,cAAc,oBAAIE,IAAAA;AACvB,SAAKD,eAAe,oBAAIC,IAAAA;EAC1B;EAEOC,mBACLC,iBACA;AACA,UAAMC,MAAM,KAAKC,OAAOF,eAAAA;AACxB,QAAI,CAAC,KAAKH,aAAaM,IAAIF,GAAAA,GAAM;AAC/B,WAAKJ,aAAaO,IAAIH,KAAKD,eAAAA;IAC7B;AACA,SAAKJ,YAAYQ,IAAIH,MAAM,KAAKL,YAAYS,IAAIJ,GAAAA,KAAQ,KAAK,CAAA;EAC/D;EAEOK,8BAA8B;AACnC,UAAMC,OAAoC,CAAA;AAC1C,SAAKX,YAAYY,QAAQ,CAACC,OAAOR,QAAAA;AAC/B,YAAMD,kBAAkB,KAAKH,aAAaQ,IAAIJ,GAAAA;AAC9C,UAAID,iBAAiB;AACnBO,aAAKG,KAAK;UACRC,UAAUX,gBAAgBW,YAAY;UACtCC,QAAQZ,gBAAgBY;UACxBC,MAAMb,gBAAgBa;UACtBC,KAAKd,gBAAgBc,IAAIC,MAAM,GAAA;UAC/BC,KAAKhB,gBAAgBgB;UACrBC,MAAMjB,gBAAgBiB;UACtBC,aAAaT;QACf,CAAA;MACF;IACF,CAAA;AACA,SAAKb,YAAYuB,MAAK;AACtB,SAAKtB,aAAasB,MAAK;AACvB,WAAOZ;EACT;EAEQL,OAAOF,iBAAuD;AACpE,UAAMoB,YAAY;MAChBpB,gBAAgBW,YAAY;MAC5BX,gBAAgBY,OAAOS,YAAW;MAClCrB,gBAAgBa;MAChBb,gBAAgBc;MAChBd,gBAAgBgB,IAAIM,KAAI;MACxBtB,gBAAgBiB;MAChBM,KAAK,GAAA;AACP,WAAOC,WAAW,KAAA,EAAOC,OAAOL,SAAAA,EAAWM,OAAO,KAAA;EACpD;AACF;AAnDqB/B;AAArB,IAAqBA,yBAArB;","names":["createHash","ValidationErrorCounter","errorCounts","errorDetails","Map","addValidationError","validationError","key","getKey","has","set","get","getAndResetValidationErrors","data","forEach","count","push","consumer","method","path","loc","split","msg","type","error_count","clear","hashInput","toUpperCase","trim","join","createHash","update","digest"]}
|
package/dist/express/index.cjs
CHANGED
|
@@ -816,7 +816,7 @@ var _ApitallyClient = class _ApitallyClient {
|
|
|
816
816
|
throw new Error("Apitally client is already initialized");
|
|
817
817
|
}
|
|
818
818
|
if (!isValidClientId(clientId)) {
|
|
819
|
-
throw new Error(`Invalid client ID '${clientId}' (expecting
|
|
819
|
+
throw new Error(`Invalid Apitally client ID '${clientId}' (expecting hexadecimal UUID format)`);
|
|
820
820
|
}
|
|
821
821
|
if (!isValidEnv(env)) {
|
|
822
822
|
throw new Error(`Invalid env '${env}' (expecting 1-32 alphanumeric lowercase characters and hyphens only)`);
|
|
@@ -1072,6 +1072,25 @@ function getPackageVersion(name) {
|
|
|
1072
1072
|
}
|
|
1073
1073
|
__name(getPackageVersion, "getPackageVersion");
|
|
1074
1074
|
|
|
1075
|
+
// src/common/utils.ts
|
|
1076
|
+
function parseContentLength(contentLength) {
|
|
1077
|
+
if (contentLength === void 0 || contentLength === null) {
|
|
1078
|
+
return void 0;
|
|
1079
|
+
}
|
|
1080
|
+
if (typeof contentLength === "number") {
|
|
1081
|
+
return contentLength;
|
|
1082
|
+
}
|
|
1083
|
+
if (typeof contentLength === "string") {
|
|
1084
|
+
const parsed = parseInt(contentLength);
|
|
1085
|
+
return isNaN(parsed) ? void 0 : parsed;
|
|
1086
|
+
}
|
|
1087
|
+
if (Array.isArray(contentLength)) {
|
|
1088
|
+
return parseContentLength(contentLength[0]);
|
|
1089
|
+
}
|
|
1090
|
+
return void 0;
|
|
1091
|
+
}
|
|
1092
|
+
__name(parseContentLength, "parseContentLength");
|
|
1093
|
+
|
|
1075
1094
|
// src/express/utils.js
|
|
1076
1095
|
var regExpToParseExpressPathRegExp = /^\/\^\\?\/?(?:(:?[\w\\.-]*(?:\\\/:?[\w\\.-]*)*)|(\(\?:\\?\/?\([^)]+\)\)))\\\/.*/;
|
|
1077
1096
|
var regExpToReplaceExpressPathRegExpParams = /\(\?:\\?\/?\([^)]+\)\)/;
|
|
@@ -1083,6 +1102,29 @@ var STACK_ITEM_VALID_NAMES = [
|
|
|
1083
1102
|
"bound dispatch",
|
|
1084
1103
|
"mounted_app"
|
|
1085
1104
|
];
|
|
1105
|
+
var getRouterInfo = /* @__PURE__ */ __name(function(app) {
|
|
1106
|
+
var _a2, _b;
|
|
1107
|
+
if (app.stack) {
|
|
1108
|
+
return {
|
|
1109
|
+
stack: app.stack,
|
|
1110
|
+
version: "v4"
|
|
1111
|
+
};
|
|
1112
|
+
} else if ((_a2 = app._router) == null ? void 0 : _a2.stack) {
|
|
1113
|
+
return {
|
|
1114
|
+
stack: app._router.stack,
|
|
1115
|
+
version: "v4"
|
|
1116
|
+
};
|
|
1117
|
+
} else if ((_b = app.router) == null ? void 0 : _b.stack) {
|
|
1118
|
+
return {
|
|
1119
|
+
stack: app.router.stack,
|
|
1120
|
+
version: "v5"
|
|
1121
|
+
};
|
|
1122
|
+
}
|
|
1123
|
+
return {
|
|
1124
|
+
stack: null,
|
|
1125
|
+
version: "v4"
|
|
1126
|
+
};
|
|
1127
|
+
}, "getRouterInfo");
|
|
1086
1128
|
var getRouteMethods = /* @__PURE__ */ __name(function(route) {
|
|
1087
1129
|
let methods = Object.keys(route.methods);
|
|
1088
1130
|
methods = methods.filter((method) => method !== "_all");
|
|
@@ -1115,12 +1157,12 @@ var parseExpressRoute = /* @__PURE__ */ __name(function(route, basePath) {
|
|
|
1115
1157
|
});
|
|
1116
1158
|
return endpoints;
|
|
1117
1159
|
}, "parseExpressRoute");
|
|
1118
|
-
var
|
|
1160
|
+
var parseExpressPathRegExp = /* @__PURE__ */ __name(function(expressPathRegExp, keys) {
|
|
1119
1161
|
let parsedRegExp = expressPathRegExp.toString();
|
|
1120
1162
|
let expressPathRegExpExec = regExpToParseExpressPathRegExp.exec(parsedRegExp);
|
|
1121
1163
|
let paramIndex = 0;
|
|
1122
1164
|
while (hasParams(parsedRegExp)) {
|
|
1123
|
-
const paramName =
|
|
1165
|
+
const paramName = keys[paramIndex].name;
|
|
1124
1166
|
const paramId = `:${paramName}`;
|
|
1125
1167
|
parsedRegExp = parsedRegExp.replace(regExpToReplaceExpressPathRegExpParams, (str) => {
|
|
1126
1168
|
if (str.startsWith("(?:\\/")) {
|
|
@@ -1133,11 +1175,19 @@ var parseExpressPath = /* @__PURE__ */ __name(function(expressPathRegExp, params
|
|
|
1133
1175
|
if (parsedRegExp !== expressPathRegExp.toString()) {
|
|
1134
1176
|
expressPathRegExpExec = regExpToParseExpressPathRegExp.exec(parsedRegExp);
|
|
1135
1177
|
}
|
|
1136
|
-
|
|
1137
|
-
|
|
1178
|
+
return expressPathRegExpExec[1].replace(/\\\//g, "/");
|
|
1179
|
+
}, "parseExpressPathRegExp");
|
|
1180
|
+
var parseExpressPath = /* @__PURE__ */ __name(function(expressPath, params) {
|
|
1181
|
+
let result = expressPath;
|
|
1182
|
+
for (const [paramName, paramValue] of Object.entries(params)) {
|
|
1183
|
+
result = result.replace(paramValue, `:${paramName}`);
|
|
1184
|
+
}
|
|
1185
|
+
return result;
|
|
1138
1186
|
}, "parseExpressPath");
|
|
1139
1187
|
var parseEndpoints = /* @__PURE__ */ __name(function(app, basePath, endpoints) {
|
|
1140
|
-
const
|
|
1188
|
+
const routerInfo = getRouterInfo(app);
|
|
1189
|
+
const stack = routerInfo.stack;
|
|
1190
|
+
const version = routerInfo.version;
|
|
1141
1191
|
endpoints = endpoints || [];
|
|
1142
1192
|
basePath = basePath || "";
|
|
1143
1193
|
if (!stack) {
|
|
@@ -1151,7 +1201,7 @@ var parseEndpoints = /* @__PURE__ */ __name(function(app, basePath, endpoints) {
|
|
|
1151
1201
|
]);
|
|
1152
1202
|
}
|
|
1153
1203
|
} else {
|
|
1154
|
-
endpoints = parseStack(stack, basePath, endpoints);
|
|
1204
|
+
endpoints = parseStack(stack, basePath, endpoints, version);
|
|
1155
1205
|
}
|
|
1156
1206
|
return endpoints;
|
|
1157
1207
|
}, "parseEndpoints");
|
|
@@ -1167,20 +1217,28 @@ var addEndpoints = /* @__PURE__ */ __name(function(currentEndpoints, endpointsTo
|
|
|
1167
1217
|
});
|
|
1168
1218
|
return currentEndpoints;
|
|
1169
1219
|
}, "addEndpoints");
|
|
1170
|
-
var parseStack = /* @__PURE__ */ __name(function(stack, basePath, endpoints) {
|
|
1220
|
+
var parseStack = /* @__PURE__ */ __name(function(stack, basePath, endpoints, version) {
|
|
1171
1221
|
stack.forEach((stackItem) => {
|
|
1172
1222
|
if (stackItem.route) {
|
|
1173
1223
|
const newEndpoints = parseExpressRoute(stackItem.route, basePath);
|
|
1174
1224
|
endpoints = addEndpoints(endpoints, newEndpoints);
|
|
1175
1225
|
} else if (STACK_ITEM_VALID_NAMES.includes(stackItem.name)) {
|
|
1176
|
-
const isExpressPathRegexp = regExpToParseExpressPathRegExp.test(stackItem.regexp);
|
|
1177
1226
|
let newBasePath = basePath;
|
|
1178
|
-
if (
|
|
1179
|
-
const
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1227
|
+
if (version === "v4") {
|
|
1228
|
+
const isExpressPathRegExp = regExpToParseExpressPathRegExp.test(stackItem.regexp);
|
|
1229
|
+
if (isExpressPathRegExp) {
|
|
1230
|
+
const parsedPath = parseExpressPathRegExp(stackItem.regexp, stackItem.keys);
|
|
1231
|
+
newBasePath += `/${parsedPath}`;
|
|
1232
|
+
} else if (!stackItem.path && stackItem.regexp && stackItem.regexp.toString() !== EXPRESS_ROOT_PATH_REGEXP_VALUE) {
|
|
1233
|
+
const regExpPath = `RegExp(${stackItem.regexp})`;
|
|
1234
|
+
newBasePath += `/${regExpPath}`;
|
|
1235
|
+
}
|
|
1236
|
+
} else if (version === "v5") {
|
|
1237
|
+
if (!stackItem.path) {
|
|
1238
|
+
return;
|
|
1239
|
+
} else if (stackItem.path !== "/") {
|
|
1240
|
+
newBasePath += stackItem.path.startsWith("/") ? stackItem.path : `/${stackItem.path}`;
|
|
1241
|
+
}
|
|
1184
1242
|
}
|
|
1185
1243
|
endpoints = parseEndpoints(stackItem.handle, newBasePath, endpoints);
|
|
1186
1244
|
}
|
|
@@ -1231,12 +1289,14 @@ var getMiddleware = /* @__PURE__ */ __name((app, client) => {
|
|
|
1231
1289
|
}
|
|
1232
1290
|
return originalSend.call(res, body);
|
|
1233
1291
|
};
|
|
1234
|
-
res.
|
|
1292
|
+
res.once("finish", () => {
|
|
1235
1293
|
try {
|
|
1236
1294
|
const responseTime = import_perf_hooks.performance.now() - startTime;
|
|
1237
1295
|
const path = getRoutePath(req);
|
|
1238
1296
|
const consumer = getConsumer(req);
|
|
1239
1297
|
client.consumerRegistry.addOrUpdateConsumer(consumer);
|
|
1298
|
+
const requestSize = parseContentLength(req.get("content-length"));
|
|
1299
|
+
const responseSize = parseContentLength(res.get("content-length"));
|
|
1240
1300
|
if (path) {
|
|
1241
1301
|
client.requestCounter.addRequest({
|
|
1242
1302
|
consumer: consumer == null ? void 0 : consumer.identifier,
|
|
@@ -1244,8 +1304,8 @@ var getMiddleware = /* @__PURE__ */ __name((app, client) => {
|
|
|
1244
1304
|
path,
|
|
1245
1305
|
statusCode: res.statusCode,
|
|
1246
1306
|
responseTime,
|
|
1247
|
-
requestSize
|
|
1248
|
-
responseSize
|
|
1307
|
+
requestSize,
|
|
1308
|
+
responseSize
|
|
1249
1309
|
});
|
|
1250
1310
|
if ((res.statusCode === 400 || res.statusCode === 422) && res.locals.body) {
|
|
1251
1311
|
let jsonBody;
|
|
@@ -1293,14 +1353,14 @@ var getMiddleware = /* @__PURE__ */ __name((app, client) => {
|
|
|
1293
1353
|
path,
|
|
1294
1354
|
url: `${req.protocol}://${req.host}${req.originalUrl}`,
|
|
1295
1355
|
headers: convertHeaders(req.headers),
|
|
1296
|
-
size:
|
|
1356
|
+
size: requestSize,
|
|
1297
1357
|
consumer: consumer == null ? void 0 : consumer.identifier,
|
|
1298
1358
|
body: convertBody(req.body, req.get("content-type"))
|
|
1299
1359
|
}, {
|
|
1300
1360
|
statusCode: res.statusCode,
|
|
1301
1361
|
responseTime: responseTime / 1e3,
|
|
1302
1362
|
headers: convertHeaders(res.getHeaders()),
|
|
1303
|
-
size:
|
|
1363
|
+
size: responseSize,
|
|
1304
1364
|
body: convertBody(res.locals.body, res.get("content-type"))
|
|
1305
1365
|
}, res.locals.serverError);
|
|
1306
1366
|
}
|
|
@@ -1328,8 +1388,11 @@ var getRoutePath = /* @__PURE__ */ __name((req) => {
|
|
|
1328
1388
|
return;
|
|
1329
1389
|
}
|
|
1330
1390
|
if (req.baseUrl) {
|
|
1331
|
-
const
|
|
1332
|
-
|
|
1391
|
+
const routerInfo = getRouterInfo(req.app);
|
|
1392
|
+
if (routerInfo.stack) {
|
|
1393
|
+
const routerPath = getRouterPath(routerInfo.stack, req.baseUrl);
|
|
1394
|
+
return req.route.path === "/" ? routerPath : routerPath + req.route.path;
|
|
1395
|
+
}
|
|
1333
1396
|
}
|
|
1334
1397
|
return req.route.path;
|
|
1335
1398
|
}, "getRoutePath");
|
|
@@ -1339,12 +1402,15 @@ var getRouterPath = /* @__PURE__ */ __name((stack, baseUrl) => {
|
|
|
1339
1402
|
while (stack && stack.length > 0) {
|
|
1340
1403
|
const routerLayer = stack.find((layer) => {
|
|
1341
1404
|
var _a3;
|
|
1342
|
-
return layer.name === "router" && layer.path && ((_a3 = layer.regexp) == null ? void 0 : _a3.test(baseUrl));
|
|
1405
|
+
return layer.name === "router" && layer.path && (baseUrl.startsWith(layer.path) || ((_a3 = layer.regexp) == null ? void 0 : _a3.test(baseUrl)));
|
|
1343
1406
|
});
|
|
1344
1407
|
if (routerLayer) {
|
|
1345
|
-
if (routerLayer.keys.length > 0) {
|
|
1346
|
-
const parsedPath =
|
|
1408
|
+
if (routerLayer.regexp && routerLayer.keys && routerLayer.keys.length > 0) {
|
|
1409
|
+
const parsedPath = parseExpressPathRegExp(routerLayer.regexp, routerLayer.keys);
|
|
1347
1410
|
routerPaths.push("/" + parsedPath);
|
|
1411
|
+
} else if (routerLayer.params && Object.keys(routerLayer.params).length > 0) {
|
|
1412
|
+
const parsedPath = parseExpressPath(routerLayer.path, routerLayer.params);
|
|
1413
|
+
routerPaths.push(parsedPath);
|
|
1348
1414
|
} else {
|
|
1349
1415
|
routerPaths.push(routerLayer.path);
|
|
1350
1416
|
}
|