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
|
@@ -238,9 +238,9 @@ var _TempGzipFile = class _TempGzipFile {
|
|
|
238
238
|
this.writeStream.once("ready", resolve);
|
|
239
239
|
this.writeStream.once("error", reject);
|
|
240
240
|
});
|
|
241
|
-
this.closedPromise = new Promise((resolve) => {
|
|
241
|
+
this.closedPromise = new Promise((resolve, reject) => {
|
|
242
242
|
this.writeStream.once("close", resolve);
|
|
243
|
-
this.writeStream.once("error",
|
|
243
|
+
this.writeStream.once("error", reject);
|
|
244
244
|
});
|
|
245
245
|
this.gzip = (0, import_zlib.createGzip)();
|
|
246
246
|
this.gzip.pipe(this.writeStream);
|
|
@@ -390,7 +390,10 @@ var _RequestLogger = class _RequestLogger {
|
|
|
390
390
|
hasSupportedContentType(headers) {
|
|
391
391
|
var _a2;
|
|
392
392
|
const contentType = (_a2 = headers.find(([k]) => k.toLowerCase() === "content-type")) == null ? void 0 : _a2[1];
|
|
393
|
-
return
|
|
393
|
+
return this.isSupportedContentType(contentType);
|
|
394
|
+
}
|
|
395
|
+
isSupportedContentType(contentType) {
|
|
396
|
+
return typeof contentType === "string" && ALLOWED_CONTENT_TYPES.some((t) => contentType.startsWith(t));
|
|
394
397
|
}
|
|
395
398
|
maskQueryParams(search) {
|
|
396
399
|
const params = new URLSearchParams(search);
|
|
@@ -418,8 +421,6 @@ var _RequestLogger = class _RequestLogger {
|
|
|
418
421
|
}
|
|
419
422
|
url.search = this.config.logQueryParams ? this.maskQueryParams(url.search) : "";
|
|
420
423
|
request.url = url.toString();
|
|
421
|
-
request.headers = this.config.logRequestHeaders ? this.maskHeaders(request.headers) : [];
|
|
422
|
-
response.headers = this.config.logResponseHeaders ? this.maskHeaders(response.headers) : [];
|
|
423
424
|
if (!this.config.logRequestBody || !this.hasSupportedContentType(request.headers)) {
|
|
424
425
|
request.body = void 0;
|
|
425
426
|
} else if (request.body) {
|
|
@@ -452,6 +453,8 @@ var _RequestLogger = class _RequestLogger {
|
|
|
452
453
|
}
|
|
453
454
|
}
|
|
454
455
|
}
|
|
456
|
+
request.headers = this.config.logRequestHeaders ? this.maskHeaders(request.headers) : [];
|
|
457
|
+
response.headers = this.config.logResponseHeaders ? this.maskHeaders(response.headers) : [];
|
|
455
458
|
const item = {
|
|
456
459
|
uuid: (0, import_crypto2.randomUUID)(),
|
|
457
460
|
request: skipEmptyValues(request),
|
|
@@ -788,6 +791,7 @@ var _ApitallyClient = class _ApitallyClient {
|
|
|
788
791
|
syncIntervalId;
|
|
789
792
|
startupData;
|
|
790
793
|
startupDataSent = false;
|
|
794
|
+
enabled = true;
|
|
791
795
|
requestCounter;
|
|
792
796
|
requestLogger;
|
|
793
797
|
validationErrorCounter;
|
|
@@ -824,12 +828,16 @@ var _ApitallyClient = class _ApitallyClient {
|
|
|
824
828
|
}
|
|
825
829
|
return _ApitallyClient.instance;
|
|
826
830
|
}
|
|
831
|
+
isEnabled() {
|
|
832
|
+
return this.enabled;
|
|
833
|
+
}
|
|
827
834
|
static async shutdown() {
|
|
828
835
|
if (_ApitallyClient.instance) {
|
|
829
836
|
await _ApitallyClient.instance.handleShutdown();
|
|
830
837
|
}
|
|
831
838
|
}
|
|
832
839
|
async handleShutdown() {
|
|
840
|
+
this.enabled = false;
|
|
833
841
|
this.stopSync();
|
|
834
842
|
await this.sendSyncData();
|
|
835
843
|
await this.sendLogData();
|
|
@@ -929,7 +937,7 @@ var _ApitallyClient = class _ApitallyClient {
|
|
|
929
937
|
async sendSyncData() {
|
|
930
938
|
this.logger.debug("Synchronizing data with Apitally Hub");
|
|
931
939
|
const newPayload = {
|
|
932
|
-
|
|
940
|
+
timestamp: Date.now() / 1e3,
|
|
933
941
|
instance_uuid: this.instanceUuid,
|
|
934
942
|
message_uuid: (0, import_crypto5.randomUUID)(),
|
|
935
943
|
requests: this.requestCounter.getAndResetRequests(),
|
|
@@ -937,22 +945,16 @@ var _ApitallyClient = class _ApitallyClient {
|
|
|
937
945
|
server_errors: this.serverErrorCounter.getAndResetServerErrors(),
|
|
938
946
|
consumers: this.consumerRegistry.getAndResetUpdatedConsumers()
|
|
939
947
|
};
|
|
940
|
-
this.syncDataQueue.push(
|
|
941
|
-
Date.now(),
|
|
942
|
-
newPayload
|
|
943
|
-
]);
|
|
948
|
+
this.syncDataQueue.push(newPayload);
|
|
944
949
|
let i = 0;
|
|
945
950
|
while (this.syncDataQueue.length > 0) {
|
|
946
|
-
const
|
|
947
|
-
if (
|
|
948
|
-
const [time, payload] = queueItem;
|
|
951
|
+
const payload = this.syncDataQueue.shift();
|
|
952
|
+
if (payload) {
|
|
949
953
|
try {
|
|
950
|
-
|
|
951
|
-
if (timeOffset <= MAX_QUEUE_TIME) {
|
|
954
|
+
if (Date.now() - payload.timestamp * 1e3 <= MAX_QUEUE_TIME) {
|
|
952
955
|
if (i > 0) {
|
|
953
956
|
await this.randomDelay();
|
|
954
957
|
}
|
|
955
|
-
payload.time_offset = timeOffset / 1e3;
|
|
956
958
|
await this.sendData("sync", payload);
|
|
957
959
|
i += 1;
|
|
958
960
|
}
|
|
@@ -962,7 +964,7 @@ var _ApitallyClient = class _ApitallyClient {
|
|
|
962
964
|
this.logger.debug("Error while synchronizing data with Apitally Hub (will retry)", {
|
|
963
965
|
error
|
|
964
966
|
});
|
|
965
|
-
this.syncDataQueue.push(
|
|
967
|
+
this.syncDataQueue.push(payload);
|
|
966
968
|
break;
|
|
967
969
|
}
|
|
968
970
|
}
|
|
@@ -1019,6 +1021,7 @@ var _ApitallyClient = class _ApitallyClient {
|
|
|
1019
1021
|
if (error instanceof HTTPError) {
|
|
1020
1022
|
if (error.response.status === 404) {
|
|
1021
1023
|
this.logger.error(`Invalid Apitally client ID: '${this.clientId}'`);
|
|
1024
|
+
this.enabled = false;
|
|
1022
1025
|
this.stopSync();
|
|
1023
1026
|
return true;
|
|
1024
1027
|
}
|
|
@@ -1030,7 +1033,7 @@ var _ApitallyClient = class _ApitallyClient {
|
|
|
1030
1033
|
return false;
|
|
1031
1034
|
}
|
|
1032
1035
|
async randomDelay() {
|
|
1033
|
-
const delay = 100 + Math.random() *
|
|
1036
|
+
const delay = 100 + Math.random() * 400;
|
|
1034
1037
|
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
1035
1038
|
}
|
|
1036
1039
|
};
|
|
@@ -1194,6 +1197,10 @@ var useApitally = /* @__PURE__ */ __name((app, config) => {
|
|
|
1194
1197
|
var getMiddleware = /* @__PURE__ */ __name((app, client) => {
|
|
1195
1198
|
let errorHandlerConfigured = false;
|
|
1196
1199
|
return (req, res, next) => {
|
|
1200
|
+
if (!client.isEnabled()) {
|
|
1201
|
+
next();
|
|
1202
|
+
return;
|
|
1203
|
+
}
|
|
1197
1204
|
if (!errorHandlerConfigured) {
|
|
1198
1205
|
app.use((err, req2, res2, next2) => {
|
|
1199
1206
|
res2.locals.serverError = err;
|
|
@@ -1205,7 +1212,10 @@ var getMiddleware = /* @__PURE__ */ __name((app, client) => {
|
|
|
1205
1212
|
const startTime = import_perf_hooks.performance.now();
|
|
1206
1213
|
const originalSend = res.send;
|
|
1207
1214
|
res.send = (body) => {
|
|
1208
|
-
|
|
1215
|
+
const contentType = res.get("content-type");
|
|
1216
|
+
if (client.requestLogger.isSupportedContentType(contentType)) {
|
|
1217
|
+
res.locals.body = body;
|
|
1218
|
+
}
|
|
1209
1219
|
return originalSend.call(res, body);
|
|
1210
1220
|
};
|
|
1211
1221
|
res.on("finish", () => {
|