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.js
CHANGED
|
@@ -216,9 +216,9 @@ var _TempGzipFile = class _TempGzipFile {
|
|
|
216
216
|
this.writeStream.once("ready", resolve);
|
|
217
217
|
this.writeStream.once("error", reject);
|
|
218
218
|
});
|
|
219
|
-
this.closedPromise = new Promise((resolve) => {
|
|
219
|
+
this.closedPromise = new Promise((resolve, reject) => {
|
|
220
220
|
this.writeStream.once("close", resolve);
|
|
221
|
-
this.writeStream.once("error",
|
|
221
|
+
this.writeStream.once("error", reject);
|
|
222
222
|
});
|
|
223
223
|
this.gzip = createGzip();
|
|
224
224
|
this.gzip.pipe(this.writeStream);
|
|
@@ -368,7 +368,10 @@ var _RequestLogger = class _RequestLogger {
|
|
|
368
368
|
hasSupportedContentType(headers) {
|
|
369
369
|
var _a3;
|
|
370
370
|
const contentType = (_a3 = headers.find(([k]) => k.toLowerCase() === "content-type")) == null ? void 0 : _a3[1];
|
|
371
|
-
return
|
|
371
|
+
return this.isSupportedContentType(contentType);
|
|
372
|
+
}
|
|
373
|
+
isSupportedContentType(contentType) {
|
|
374
|
+
return typeof contentType === "string" && ALLOWED_CONTENT_TYPES.some((t) => contentType.startsWith(t));
|
|
372
375
|
}
|
|
373
376
|
maskQueryParams(search) {
|
|
374
377
|
const params = new URLSearchParams(search);
|
|
@@ -396,8 +399,6 @@ var _RequestLogger = class _RequestLogger {
|
|
|
396
399
|
}
|
|
397
400
|
url.search = this.config.logQueryParams ? this.maskQueryParams(url.search) : "";
|
|
398
401
|
request.url = url.toString();
|
|
399
|
-
request.headers = this.config.logRequestHeaders ? this.maskHeaders(request.headers) : [];
|
|
400
|
-
response.headers = this.config.logResponseHeaders ? this.maskHeaders(response.headers) : [];
|
|
401
402
|
if (!this.config.logRequestBody || !this.hasSupportedContentType(request.headers)) {
|
|
402
403
|
request.body = void 0;
|
|
403
404
|
} else if (request.body) {
|
|
@@ -430,6 +431,8 @@ var _RequestLogger = class _RequestLogger {
|
|
|
430
431
|
}
|
|
431
432
|
}
|
|
432
433
|
}
|
|
434
|
+
request.headers = this.config.logRequestHeaders ? this.maskHeaders(request.headers) : [];
|
|
435
|
+
response.headers = this.config.logResponseHeaders ? this.maskHeaders(response.headers) : [];
|
|
433
436
|
const item = {
|
|
434
437
|
uuid: randomUUID2(),
|
|
435
438
|
request: skipEmptyValues(request),
|
|
@@ -766,6 +769,7 @@ var _ApitallyClient = class _ApitallyClient {
|
|
|
766
769
|
syncIntervalId;
|
|
767
770
|
startupData;
|
|
768
771
|
startupDataSent = false;
|
|
772
|
+
enabled = true;
|
|
769
773
|
requestCounter;
|
|
770
774
|
requestLogger;
|
|
771
775
|
validationErrorCounter;
|
|
@@ -802,12 +806,16 @@ var _ApitallyClient = class _ApitallyClient {
|
|
|
802
806
|
}
|
|
803
807
|
return _ApitallyClient.instance;
|
|
804
808
|
}
|
|
809
|
+
isEnabled() {
|
|
810
|
+
return this.enabled;
|
|
811
|
+
}
|
|
805
812
|
static async shutdown() {
|
|
806
813
|
if (_ApitallyClient.instance) {
|
|
807
814
|
await _ApitallyClient.instance.handleShutdown();
|
|
808
815
|
}
|
|
809
816
|
}
|
|
810
817
|
async handleShutdown() {
|
|
818
|
+
this.enabled = false;
|
|
811
819
|
this.stopSync();
|
|
812
820
|
await this.sendSyncData();
|
|
813
821
|
await this.sendLogData();
|
|
@@ -907,7 +915,7 @@ var _ApitallyClient = class _ApitallyClient {
|
|
|
907
915
|
async sendSyncData() {
|
|
908
916
|
this.logger.debug("Synchronizing data with Apitally Hub");
|
|
909
917
|
const newPayload = {
|
|
910
|
-
|
|
918
|
+
timestamp: Date.now() / 1e3,
|
|
911
919
|
instance_uuid: this.instanceUuid,
|
|
912
920
|
message_uuid: randomUUID3(),
|
|
913
921
|
requests: this.requestCounter.getAndResetRequests(),
|
|
@@ -915,22 +923,16 @@ var _ApitallyClient = class _ApitallyClient {
|
|
|
915
923
|
server_errors: this.serverErrorCounter.getAndResetServerErrors(),
|
|
916
924
|
consumers: this.consumerRegistry.getAndResetUpdatedConsumers()
|
|
917
925
|
};
|
|
918
|
-
this.syncDataQueue.push(
|
|
919
|
-
Date.now(),
|
|
920
|
-
newPayload
|
|
921
|
-
]);
|
|
926
|
+
this.syncDataQueue.push(newPayload);
|
|
922
927
|
let i = 0;
|
|
923
928
|
while (this.syncDataQueue.length > 0) {
|
|
924
|
-
const
|
|
925
|
-
if (
|
|
926
|
-
const [time, payload] = queueItem;
|
|
929
|
+
const payload = this.syncDataQueue.shift();
|
|
930
|
+
if (payload) {
|
|
927
931
|
try {
|
|
928
|
-
|
|
929
|
-
if (timeOffset <= MAX_QUEUE_TIME) {
|
|
932
|
+
if (Date.now() - payload.timestamp * 1e3 <= MAX_QUEUE_TIME) {
|
|
930
933
|
if (i > 0) {
|
|
931
934
|
await this.randomDelay();
|
|
932
935
|
}
|
|
933
|
-
payload.time_offset = timeOffset / 1e3;
|
|
934
936
|
await this.sendData("sync", payload);
|
|
935
937
|
i += 1;
|
|
936
938
|
}
|
|
@@ -940,7 +942,7 @@ var _ApitallyClient = class _ApitallyClient {
|
|
|
940
942
|
this.logger.debug("Error while synchronizing data with Apitally Hub (will retry)", {
|
|
941
943
|
error
|
|
942
944
|
});
|
|
943
|
-
this.syncDataQueue.push(
|
|
945
|
+
this.syncDataQueue.push(payload);
|
|
944
946
|
break;
|
|
945
947
|
}
|
|
946
948
|
}
|
|
@@ -997,6 +999,7 @@ var _ApitallyClient = class _ApitallyClient {
|
|
|
997
999
|
if (error instanceof HTTPError) {
|
|
998
1000
|
if (error.response.status === 404) {
|
|
999
1001
|
this.logger.error(`Invalid Apitally client ID: '${this.clientId}'`);
|
|
1002
|
+
this.enabled = false;
|
|
1000
1003
|
this.stopSync();
|
|
1001
1004
|
return true;
|
|
1002
1005
|
}
|
|
@@ -1008,7 +1011,7 @@ var _ApitallyClient = class _ApitallyClient {
|
|
|
1008
1011
|
return false;
|
|
1009
1012
|
}
|
|
1010
1013
|
async randomDelay() {
|
|
1011
|
-
const delay = 100 + Math.random() *
|
|
1014
|
+
const delay = 100 + Math.random() * 400;
|
|
1012
1015
|
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
1013
1016
|
}
|
|
1014
1017
|
};
|
|
@@ -1171,6 +1174,10 @@ var useApitally = /* @__PURE__ */ __name((app, config) => {
|
|
|
1171
1174
|
var getMiddleware = /* @__PURE__ */ __name((app, client) => {
|
|
1172
1175
|
let errorHandlerConfigured = false;
|
|
1173
1176
|
return (req, res, next) => {
|
|
1177
|
+
if (!client.isEnabled()) {
|
|
1178
|
+
next();
|
|
1179
|
+
return;
|
|
1180
|
+
}
|
|
1174
1181
|
if (!errorHandlerConfigured) {
|
|
1175
1182
|
app.use((err, req2, res2, next2) => {
|
|
1176
1183
|
res2.locals.serverError = err;
|
|
@@ -1182,7 +1189,10 @@ var getMiddleware = /* @__PURE__ */ __name((app, client) => {
|
|
|
1182
1189
|
const startTime = performance.now();
|
|
1183
1190
|
const originalSend = res.send;
|
|
1184
1191
|
res.send = (body) => {
|
|
1185
|
-
|
|
1192
|
+
const contentType = res.get("content-type");
|
|
1193
|
+
if (client.requestLogger.isSupportedContentType(contentType)) {
|
|
1194
|
+
res.locals.body = body;
|
|
1195
|
+
}
|
|
1186
1196
|
return originalSend.call(res, body);
|
|
1187
1197
|
};
|
|
1188
1198
|
res.on("finish", () => {
|