apitally 0.11.3 → 0.11.5
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 +25 -12
- package/dist/common/client.cjs +21 -18
- package/dist/common/client.cjs.map +1 -1
- package/dist/common/client.d.cts +2 -0
- package/dist/common/client.d.ts +2 -0
- package/dist/common/client.js +21 -18
- 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 +8 -5
- package/dist/common/requestLogger.cjs.map +1 -1
- package/dist/common/requestLogger.d.cts +1 -0
- package/dist/common/requestLogger.d.ts +1 -0
- package/dist/common/requestLogger.js +8 -5
- package/dist/common/requestLogger.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 +2 -2
- package/dist/common/tempGzipFile.cjs.map +1 -1
- package/dist/common/tempGzipFile.js +2 -2
- package/dist/common/tempGzipFile.js.map +1 -1
- package/dist/common/types.cjs.map +1 -1
- package/dist/common/types.d.cts +1 -1
- package/dist/common/types.d.ts +1 -1
- package/dist/common/validationErrorCounter.cjs.map +1 -1
- package/dist/common/validationErrorCounter.js.map +1 -1
- package/dist/express/index.cjs +29 -19
- package/dist/express/index.cjs.map +1 -1
- package/dist/express/index.js +29 -19
- package/dist/express/index.js.map +1 -1
- package/dist/express/middleware.cjs +29 -19
- package/dist/express/middleware.cjs.map +1 -1
- package/dist/express/middleware.js +29 -19
- package/dist/express/middleware.js.map +1 -1
- package/dist/express/utils.cjs.map +1 -1
- package/dist/express/utils.js.map +1 -1
- package/dist/fastify/index.cjs +26 -20
- package/dist/fastify/index.cjs.map +1 -1
- package/dist/fastify/index.js +26 -20
- package/dist/fastify/index.js.map +1 -1
- package/dist/fastify/plugin.cjs +26 -20
- package/dist/fastify/plugin.cjs.map +1 -1
- package/dist/fastify/plugin.js +26 -20
- package/dist/fastify/plugin.js.map +1 -1
- package/dist/hono/index.cjs +27 -19
- package/dist/hono/index.cjs.map +1 -1
- package/dist/hono/index.js +27 -19
- package/dist/hono/index.js.map +1 -1
- package/dist/hono/middleware.cjs +27 -19
- package/dist/hono/middleware.cjs.map +1 -1
- package/dist/hono/middleware.js +27 -19
- package/dist/hono/middleware.js.map +1 -1
- package/dist/koa/index.cjs +25 -18
- package/dist/koa/index.cjs.map +1 -1
- package/dist/koa/index.js +25 -18
- package/dist/koa/index.js.map +1 -1
- package/dist/koa/middleware.cjs +25 -18
- package/dist/koa/middleware.cjs.map +1 -1
- package/dist/koa/middleware.js +25 -18
- package/dist/koa/middleware.js.map +1 -1
- package/dist/nestjs/index.cjs +29 -19
- package/dist/nestjs/index.cjs.map +1 -1
- package/dist/nestjs/index.js +29 -19
- package/dist/nestjs/index.js.map +1 -1
- package/package.json +1 -1
package/dist/nestjs/index.cjs
CHANGED
|
@@ -242,9 +242,9 @@ var _TempGzipFile = class _TempGzipFile {
|
|
|
242
242
|
this.writeStream.once("ready", resolve);
|
|
243
243
|
this.writeStream.once("error", reject);
|
|
244
244
|
});
|
|
245
|
-
this.closedPromise = new Promise((resolve) => {
|
|
245
|
+
this.closedPromise = new Promise((resolve, reject) => {
|
|
246
246
|
this.writeStream.once("close", resolve);
|
|
247
|
-
this.writeStream.once("error",
|
|
247
|
+
this.writeStream.once("error", reject);
|
|
248
248
|
});
|
|
249
249
|
this.gzip = (0, import_zlib.createGzip)();
|
|
250
250
|
this.gzip.pipe(this.writeStream);
|
|
@@ -394,7 +394,10 @@ var _RequestLogger = class _RequestLogger {
|
|
|
394
394
|
hasSupportedContentType(headers) {
|
|
395
395
|
var _a3;
|
|
396
396
|
const contentType = (_a3 = headers.find(([k]) => k.toLowerCase() === "content-type")) == null ? void 0 : _a3[1];
|
|
397
|
-
return
|
|
397
|
+
return this.isSupportedContentType(contentType);
|
|
398
|
+
}
|
|
399
|
+
isSupportedContentType(contentType) {
|
|
400
|
+
return typeof contentType === "string" && ALLOWED_CONTENT_TYPES.some((t) => contentType.startsWith(t));
|
|
398
401
|
}
|
|
399
402
|
maskQueryParams(search) {
|
|
400
403
|
const params = new URLSearchParams(search);
|
|
@@ -422,8 +425,6 @@ var _RequestLogger = class _RequestLogger {
|
|
|
422
425
|
}
|
|
423
426
|
url.search = this.config.logQueryParams ? this.maskQueryParams(url.search) : "";
|
|
424
427
|
request.url = url.toString();
|
|
425
|
-
request.headers = this.config.logRequestHeaders ? this.maskHeaders(request.headers) : [];
|
|
426
|
-
response.headers = this.config.logResponseHeaders ? this.maskHeaders(response.headers) : [];
|
|
427
428
|
if (!this.config.logRequestBody || !this.hasSupportedContentType(request.headers)) {
|
|
428
429
|
request.body = void 0;
|
|
429
430
|
} else if (request.body) {
|
|
@@ -456,6 +457,8 @@ var _RequestLogger = class _RequestLogger {
|
|
|
456
457
|
}
|
|
457
458
|
}
|
|
458
459
|
}
|
|
460
|
+
request.headers = this.config.logRequestHeaders ? this.maskHeaders(request.headers) : [];
|
|
461
|
+
response.headers = this.config.logResponseHeaders ? this.maskHeaders(response.headers) : [];
|
|
459
462
|
const item = {
|
|
460
463
|
uuid: (0, import_crypto2.randomUUID)(),
|
|
461
464
|
request: skipEmptyValues(request),
|
|
@@ -792,6 +795,7 @@ var _ApitallyClient = class _ApitallyClient {
|
|
|
792
795
|
syncIntervalId;
|
|
793
796
|
startupData;
|
|
794
797
|
startupDataSent = false;
|
|
798
|
+
enabled = true;
|
|
795
799
|
requestCounter;
|
|
796
800
|
requestLogger;
|
|
797
801
|
validationErrorCounter;
|
|
@@ -828,12 +832,16 @@ var _ApitallyClient = class _ApitallyClient {
|
|
|
828
832
|
}
|
|
829
833
|
return _ApitallyClient.instance;
|
|
830
834
|
}
|
|
835
|
+
isEnabled() {
|
|
836
|
+
return this.enabled;
|
|
837
|
+
}
|
|
831
838
|
static async shutdown() {
|
|
832
839
|
if (_ApitallyClient.instance) {
|
|
833
840
|
await _ApitallyClient.instance.handleShutdown();
|
|
834
841
|
}
|
|
835
842
|
}
|
|
836
843
|
async handleShutdown() {
|
|
844
|
+
this.enabled = false;
|
|
837
845
|
this.stopSync();
|
|
838
846
|
await this.sendSyncData();
|
|
839
847
|
await this.sendLogData();
|
|
@@ -933,7 +941,7 @@ var _ApitallyClient = class _ApitallyClient {
|
|
|
933
941
|
async sendSyncData() {
|
|
934
942
|
this.logger.debug("Synchronizing data with Apitally Hub");
|
|
935
943
|
const newPayload = {
|
|
936
|
-
|
|
944
|
+
timestamp: Date.now() / 1e3,
|
|
937
945
|
instance_uuid: this.instanceUuid,
|
|
938
946
|
message_uuid: (0, import_crypto5.randomUUID)(),
|
|
939
947
|
requests: this.requestCounter.getAndResetRequests(),
|
|
@@ -941,22 +949,16 @@ var _ApitallyClient = class _ApitallyClient {
|
|
|
941
949
|
server_errors: this.serverErrorCounter.getAndResetServerErrors(),
|
|
942
950
|
consumers: this.consumerRegistry.getAndResetUpdatedConsumers()
|
|
943
951
|
};
|
|
944
|
-
this.syncDataQueue.push(
|
|
945
|
-
Date.now(),
|
|
946
|
-
newPayload
|
|
947
|
-
]);
|
|
952
|
+
this.syncDataQueue.push(newPayload);
|
|
948
953
|
let i = 0;
|
|
949
954
|
while (this.syncDataQueue.length > 0) {
|
|
950
|
-
const
|
|
951
|
-
if (
|
|
952
|
-
const [time, payload] = queueItem;
|
|
955
|
+
const payload = this.syncDataQueue.shift();
|
|
956
|
+
if (payload) {
|
|
953
957
|
try {
|
|
954
|
-
|
|
955
|
-
if (timeOffset <= MAX_QUEUE_TIME) {
|
|
958
|
+
if (Date.now() - payload.timestamp * 1e3 <= MAX_QUEUE_TIME) {
|
|
956
959
|
if (i > 0) {
|
|
957
960
|
await this.randomDelay();
|
|
958
961
|
}
|
|
959
|
-
payload.time_offset = timeOffset / 1e3;
|
|
960
962
|
await this.sendData("sync", payload);
|
|
961
963
|
i += 1;
|
|
962
964
|
}
|
|
@@ -966,7 +968,7 @@ var _ApitallyClient = class _ApitallyClient {
|
|
|
966
968
|
this.logger.debug("Error while synchronizing data with Apitally Hub (will retry)", {
|
|
967
969
|
error
|
|
968
970
|
});
|
|
969
|
-
this.syncDataQueue.push(
|
|
971
|
+
this.syncDataQueue.push(payload);
|
|
970
972
|
break;
|
|
971
973
|
}
|
|
972
974
|
}
|
|
@@ -1023,6 +1025,7 @@ var _ApitallyClient = class _ApitallyClient {
|
|
|
1023
1025
|
if (error instanceof HTTPError) {
|
|
1024
1026
|
if (error.response.status === 404) {
|
|
1025
1027
|
this.logger.error(`Invalid Apitally client ID: '${this.clientId}'`);
|
|
1028
|
+
this.enabled = false;
|
|
1026
1029
|
this.stopSync();
|
|
1027
1030
|
return true;
|
|
1028
1031
|
}
|
|
@@ -1034,7 +1037,7 @@ var _ApitallyClient = class _ApitallyClient {
|
|
|
1034
1037
|
return false;
|
|
1035
1038
|
}
|
|
1036
1039
|
async randomDelay() {
|
|
1037
|
-
const delay = 100 + Math.random() *
|
|
1040
|
+
const delay = 100 + Math.random() * 400;
|
|
1038
1041
|
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
1039
1042
|
}
|
|
1040
1043
|
};
|
|
@@ -1198,6 +1201,10 @@ var useApitally = /* @__PURE__ */ __name((app, config) => {
|
|
|
1198
1201
|
var getMiddleware = /* @__PURE__ */ __name((app, client) => {
|
|
1199
1202
|
let errorHandlerConfigured = false;
|
|
1200
1203
|
return (req, res, next) => {
|
|
1204
|
+
if (!client.isEnabled()) {
|
|
1205
|
+
next();
|
|
1206
|
+
return;
|
|
1207
|
+
}
|
|
1201
1208
|
if (!errorHandlerConfigured) {
|
|
1202
1209
|
app.use((err, req2, res2, next2) => {
|
|
1203
1210
|
res2.locals.serverError = err;
|
|
@@ -1209,7 +1216,10 @@ var getMiddleware = /* @__PURE__ */ __name((app, client) => {
|
|
|
1209
1216
|
const startTime = import_perf_hooks.performance.now();
|
|
1210
1217
|
const originalSend = res.send;
|
|
1211
1218
|
res.send = (body) => {
|
|
1212
|
-
|
|
1219
|
+
const contentType = res.get("content-type");
|
|
1220
|
+
if (client.requestLogger.isSupportedContentType(contentType)) {
|
|
1221
|
+
res.locals.body = body;
|
|
1222
|
+
}
|
|
1213
1223
|
return originalSend.call(res, body);
|
|
1214
1224
|
};
|
|
1215
1225
|
res.on("finish", () => {
|