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/express/index.js
CHANGED
|
@@ -212,9 +212,9 @@ var _TempGzipFile = class _TempGzipFile {
|
|
|
212
212
|
this.writeStream.once("ready", resolve);
|
|
213
213
|
this.writeStream.once("error", reject);
|
|
214
214
|
});
|
|
215
|
-
this.closedPromise = new Promise((resolve) => {
|
|
215
|
+
this.closedPromise = new Promise((resolve, reject) => {
|
|
216
216
|
this.writeStream.once("close", resolve);
|
|
217
|
-
this.writeStream.once("error",
|
|
217
|
+
this.writeStream.once("error", reject);
|
|
218
218
|
});
|
|
219
219
|
this.gzip = createGzip();
|
|
220
220
|
this.gzip.pipe(this.writeStream);
|
|
@@ -364,7 +364,10 @@ var _RequestLogger = class _RequestLogger {
|
|
|
364
364
|
hasSupportedContentType(headers) {
|
|
365
365
|
var _a2;
|
|
366
366
|
const contentType = (_a2 = headers.find(([k]) => k.toLowerCase() === "content-type")) == null ? void 0 : _a2[1];
|
|
367
|
-
return
|
|
367
|
+
return this.isSupportedContentType(contentType);
|
|
368
|
+
}
|
|
369
|
+
isSupportedContentType(contentType) {
|
|
370
|
+
return typeof contentType === "string" && ALLOWED_CONTENT_TYPES.some((t) => contentType.startsWith(t));
|
|
368
371
|
}
|
|
369
372
|
maskQueryParams(search) {
|
|
370
373
|
const params = new URLSearchParams(search);
|
|
@@ -392,8 +395,6 @@ var _RequestLogger = class _RequestLogger {
|
|
|
392
395
|
}
|
|
393
396
|
url.search = this.config.logQueryParams ? this.maskQueryParams(url.search) : "";
|
|
394
397
|
request.url = url.toString();
|
|
395
|
-
request.headers = this.config.logRequestHeaders ? this.maskHeaders(request.headers) : [];
|
|
396
|
-
response.headers = this.config.logResponseHeaders ? this.maskHeaders(response.headers) : [];
|
|
397
398
|
if (!this.config.logRequestBody || !this.hasSupportedContentType(request.headers)) {
|
|
398
399
|
request.body = void 0;
|
|
399
400
|
} else if (request.body) {
|
|
@@ -426,6 +427,8 @@ var _RequestLogger = class _RequestLogger {
|
|
|
426
427
|
}
|
|
427
428
|
}
|
|
428
429
|
}
|
|
430
|
+
request.headers = this.config.logRequestHeaders ? this.maskHeaders(request.headers) : [];
|
|
431
|
+
response.headers = this.config.logResponseHeaders ? this.maskHeaders(response.headers) : [];
|
|
429
432
|
const item = {
|
|
430
433
|
uuid: randomUUID2(),
|
|
431
434
|
request: skipEmptyValues(request),
|
|
@@ -762,6 +765,7 @@ var _ApitallyClient = class _ApitallyClient {
|
|
|
762
765
|
syncIntervalId;
|
|
763
766
|
startupData;
|
|
764
767
|
startupDataSent = false;
|
|
768
|
+
enabled = true;
|
|
765
769
|
requestCounter;
|
|
766
770
|
requestLogger;
|
|
767
771
|
validationErrorCounter;
|
|
@@ -798,12 +802,16 @@ var _ApitallyClient = class _ApitallyClient {
|
|
|
798
802
|
}
|
|
799
803
|
return _ApitallyClient.instance;
|
|
800
804
|
}
|
|
805
|
+
isEnabled() {
|
|
806
|
+
return this.enabled;
|
|
807
|
+
}
|
|
801
808
|
static async shutdown() {
|
|
802
809
|
if (_ApitallyClient.instance) {
|
|
803
810
|
await _ApitallyClient.instance.handleShutdown();
|
|
804
811
|
}
|
|
805
812
|
}
|
|
806
813
|
async handleShutdown() {
|
|
814
|
+
this.enabled = false;
|
|
807
815
|
this.stopSync();
|
|
808
816
|
await this.sendSyncData();
|
|
809
817
|
await this.sendLogData();
|
|
@@ -903,7 +911,7 @@ var _ApitallyClient = class _ApitallyClient {
|
|
|
903
911
|
async sendSyncData() {
|
|
904
912
|
this.logger.debug("Synchronizing data with Apitally Hub");
|
|
905
913
|
const newPayload = {
|
|
906
|
-
|
|
914
|
+
timestamp: Date.now() / 1e3,
|
|
907
915
|
instance_uuid: this.instanceUuid,
|
|
908
916
|
message_uuid: randomUUID3(),
|
|
909
917
|
requests: this.requestCounter.getAndResetRequests(),
|
|
@@ -911,22 +919,16 @@ var _ApitallyClient = class _ApitallyClient {
|
|
|
911
919
|
server_errors: this.serverErrorCounter.getAndResetServerErrors(),
|
|
912
920
|
consumers: this.consumerRegistry.getAndResetUpdatedConsumers()
|
|
913
921
|
};
|
|
914
|
-
this.syncDataQueue.push(
|
|
915
|
-
Date.now(),
|
|
916
|
-
newPayload
|
|
917
|
-
]);
|
|
922
|
+
this.syncDataQueue.push(newPayload);
|
|
918
923
|
let i = 0;
|
|
919
924
|
while (this.syncDataQueue.length > 0) {
|
|
920
|
-
const
|
|
921
|
-
if (
|
|
922
|
-
const [time, payload] = queueItem;
|
|
925
|
+
const payload = this.syncDataQueue.shift();
|
|
926
|
+
if (payload) {
|
|
923
927
|
try {
|
|
924
|
-
|
|
925
|
-
if (timeOffset <= MAX_QUEUE_TIME) {
|
|
928
|
+
if (Date.now() - payload.timestamp * 1e3 <= MAX_QUEUE_TIME) {
|
|
926
929
|
if (i > 0) {
|
|
927
930
|
await this.randomDelay();
|
|
928
931
|
}
|
|
929
|
-
payload.time_offset = timeOffset / 1e3;
|
|
930
932
|
await this.sendData("sync", payload);
|
|
931
933
|
i += 1;
|
|
932
934
|
}
|
|
@@ -936,7 +938,7 @@ var _ApitallyClient = class _ApitallyClient {
|
|
|
936
938
|
this.logger.debug("Error while synchronizing data with Apitally Hub (will retry)", {
|
|
937
939
|
error
|
|
938
940
|
});
|
|
939
|
-
this.syncDataQueue.push(
|
|
941
|
+
this.syncDataQueue.push(payload);
|
|
940
942
|
break;
|
|
941
943
|
}
|
|
942
944
|
}
|
|
@@ -993,6 +995,7 @@ var _ApitallyClient = class _ApitallyClient {
|
|
|
993
995
|
if (error instanceof HTTPError) {
|
|
994
996
|
if (error.response.status === 404) {
|
|
995
997
|
this.logger.error(`Invalid Apitally client ID: '${this.clientId}'`);
|
|
998
|
+
this.enabled = false;
|
|
996
999
|
this.stopSync();
|
|
997
1000
|
return true;
|
|
998
1001
|
}
|
|
@@ -1004,7 +1007,7 @@ var _ApitallyClient = class _ApitallyClient {
|
|
|
1004
1007
|
return false;
|
|
1005
1008
|
}
|
|
1006
1009
|
async randomDelay() {
|
|
1007
|
-
const delay = 100 + Math.random() *
|
|
1010
|
+
const delay = 100 + Math.random() * 400;
|
|
1008
1011
|
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
1009
1012
|
}
|
|
1010
1013
|
};
|
|
@@ -1167,6 +1170,10 @@ var useApitally = /* @__PURE__ */ __name((app, config) => {
|
|
|
1167
1170
|
var getMiddleware = /* @__PURE__ */ __name((app, client) => {
|
|
1168
1171
|
let errorHandlerConfigured = false;
|
|
1169
1172
|
return (req, res, next) => {
|
|
1173
|
+
if (!client.isEnabled()) {
|
|
1174
|
+
next();
|
|
1175
|
+
return;
|
|
1176
|
+
}
|
|
1170
1177
|
if (!errorHandlerConfigured) {
|
|
1171
1178
|
app.use((err, req2, res2, next2) => {
|
|
1172
1179
|
res2.locals.serverError = err;
|
|
@@ -1178,7 +1185,10 @@ var getMiddleware = /* @__PURE__ */ __name((app, client) => {
|
|
|
1178
1185
|
const startTime = performance.now();
|
|
1179
1186
|
const originalSend = res.send;
|
|
1180
1187
|
res.send = (body) => {
|
|
1181
|
-
|
|
1188
|
+
const contentType = res.get("content-type");
|
|
1189
|
+
if (client.requestLogger.isSupportedContentType(contentType)) {
|
|
1190
|
+
res.locals.body = body;
|
|
1191
|
+
}
|
|
1182
1192
|
return originalSend.call(res, body);
|
|
1183
1193
|
};
|
|
1184
1194
|
res.on("finish", () => {
|