@golemio/core 1.20.1-dev.1707946606 → 1.20.1-rc.1707968557
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/dist/input-gateway/config/InputGatewayConfiguration.d.ts +8 -0
- package/dist/input-gateway/config/InputGatewayConfiguration.js +8 -0
- package/dist/input-gateway/config/InputGatewayConfiguration.js.map +1 -1
- package/dist/input-gateway/config/abstract.d.ts +2 -0
- package/dist/input-gateway/controllers/BaseController.d.ts +1 -1
- package/dist/input-gateway/controllers/BaseController.js +2 -1
- package/dist/input-gateway/controllers/BaseController.js.map +1 -1
- package/dist/integration-engine/config/IntegrationEngineConfiguration.d.ts +8 -0
- package/dist/integration-engine/config/IntegrationEngineConfiguration.js +8 -0
- package/dist/integration-engine/config/IntegrationEngineConfiguration.js.map +1 -1
- package/dist/integration-engine/config/abstract.d.ts +2 -0
- package/dist/integration-engine/helpers/GeocodeApi.d.ts +0 -8
- package/dist/integration-engine/helpers/GeocodeApi.js +34 -67
- package/dist/integration-engine/helpers/GeocodeApi.js.map +1 -1
- package/dist/integration-engine/helpers/IntegrationErrorHandler.js +32 -0
- package/dist/integration-engine/helpers/IntegrationErrorHandler.js.map +1 -1
- package/dist/integration-engine/helpers/interfaces/IphotonData.d.ts +0 -1
- package/dist/integration-engine/queueprocessors/QueueManager.js +2 -1
- package/dist/integration-engine/queueprocessors/QueueManager.js.map +1 -1
- package/dist/integration-engine/queueprocessors/QueueProcessor.d.ts +1 -1
- package/dist/integration-engine/queueprocessors/QueueProcessor.js +30 -3
- package/dist/integration-engine/queueprocessors/QueueProcessor.js.map +1 -1
- package/dist/integration-engine/workers/BaseWorker.d.ts +1 -1
- package/dist/integration-engine/workers/BaseWorker.js +2 -1
- package/dist/integration-engine/workers/BaseWorker.js.map +1 -1
- package/dist/monitoring/index.d.ts +1 -0
- package/dist/monitoring/index.js +1 -0
- package/dist/monitoring/index.js.map +1 -1
- package/dist/monitoring/sentry/sentry-provider.d.ts +10 -0
- package/dist/monitoring/sentry/sentry-provider.js +65 -0
- package/dist/monitoring/sentry/sentry-provider.js.map +1 -0
- package/dist/monitoring/sentry/sentry-transactions.d.ts +6 -0
- package/dist/monitoring/sentry/sentry-transactions.js +89 -0
- package/dist/monitoring/sentry/sentry-transactions.js.map +1 -0
- package/dist/output-gateway/config/OutputGatewayConfiguration.d.ts +8 -0
- package/dist/output-gateway/config/OutputGatewayConfiguration.js +8 -0
- package/dist/output-gateway/config/OutputGatewayConfiguration.js.map +1 -1
- package/dist/shared/sentry.d.ts +2 -0
- package/dist/shared/sentry.js +28 -0
- package/dist/shared/sentry.js.map +1 -0
- package/package.json +5 -3
|
@@ -12,6 +12,14 @@ export declare class InputGatewayConfiguration implements IConfiguration {
|
|
|
12
12
|
rabbit_connections: string[] | undefined;
|
|
13
13
|
rabbit_exchange_name: string | undefined;
|
|
14
14
|
saveRawDataWhitelist: any;
|
|
15
|
+
sentry: {
|
|
16
|
+
enabled: boolean;
|
|
17
|
+
dsn: string | undefined;
|
|
18
|
+
release: string;
|
|
19
|
+
environment: string | undefined;
|
|
20
|
+
debug: boolean;
|
|
21
|
+
tracesSampleRate: number;
|
|
22
|
+
};
|
|
15
23
|
metrics: {
|
|
16
24
|
enabled: boolean;
|
|
17
25
|
port: number;
|
|
@@ -26,6 +26,14 @@ let InputGatewayConfiguration = exports.InputGatewayConfiguration = class InputG
|
|
|
26
26
|
this.port = process.env.PORT;
|
|
27
27
|
this.rabbit_connections = process.env.RABBIT_CONN?.split(",");
|
|
28
28
|
this.rabbit_exchange_name = process.env.RABBIT_EXCHANGE_NAME;
|
|
29
|
+
this.sentry = {
|
|
30
|
+
enabled: process.env.SENTRY_ENABLED === "true",
|
|
31
|
+
dsn: process.env.SENTRY_DSN,
|
|
32
|
+
release: `${process.env.APP_NAME}@${process.env.npm_package_version}`,
|
|
33
|
+
environment: process.env.SENTRY_ENVIRONMENT,
|
|
34
|
+
debug: process.env.SENTRY_DEBUG === "true",
|
|
35
|
+
tracesSampleRate: process.env.SENTRY_TRACE_RATE ? parseFloat(process.env.SENTRY_TRACE_RATE) : 0,
|
|
36
|
+
};
|
|
29
37
|
this.metrics = {
|
|
30
38
|
enabled: process.env.METRICS_ENABLED === "true",
|
|
31
39
|
port: process.env.METRICS_PORT ? parseInt(process.env.METRICS_PORT, 10) : 9001,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputGatewayConfiguration.js","sourceRoot":"","sources":["../../../src/input-gateway/config/InputGatewayConfiguration.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4CAAwC;AACxC,+CAAyC;AACzC,uCAAsC;AAI/B,IAAM,yBAAyB,uCAA/B,MAAM,yBAAyB;
|
|
1
|
+
{"version":3,"file":"InputGatewayConfiguration.js","sourceRoot":"","sources":["../../../src/input-gateway/config/InputGatewayConfiguration.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4CAAwC;AACxC,+CAAyC;AACzC,uCAAsC;AAI/B,IAAM,yBAAyB,uCAA/B,MAAM,yBAAyB;IAgClC;QA/BO,gBAAW,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;QAC9C,aAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,eAAe,CAAC;QACnD,kBAAa,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;QAC1C,cAAS,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;QAClC,aAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa,CAAC;QACjD,sBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAClD,uBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;QACpD,sBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAClD,SAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QACxB,uBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QACzD,yBAAoB,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;QAExD,WAAM,GAAG;YACZ,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,MAAM;YAC9C,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU;YAC3B,OAAO,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE;YACrE,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB;YAC3C,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,MAAM;YAC1C,gBAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;SAClG,CAAC;QACK,YAAO,GAAG;YACb,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,MAAM;YAC/C,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,YAAsB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI;YACxF,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE;SAC3C,CAAC;QACK,cAAS,GAAG;YACf,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI;YAC/G,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK;YACtH,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI;SACrH,CAAC;QAGE,MAAM,oBAAoB,GAAG,IAAI,uBAAY,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC;QAC3E,IAAI,CAAC,oBAAoB,GAAG,IAAA,eAAO,EAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC;IAC1F,CAAC;CACJ,CAAA;oCApCY,yBAAyB;IADrC,IAAA,qBAAU,GAAE;;GACA,yBAAyB,CAoCrC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ISentryConfig } from "../../monitoring/sentry/sentry-provider";
|
|
1
2
|
import { IMetricsConfig } from "../../monitoring/metrics/metrics-interface";
|
|
2
3
|
export interface ISaveRawDataWhitelist {
|
|
3
4
|
route: string;
|
|
@@ -15,6 +16,7 @@ export interface IConfiguration {
|
|
|
15
16
|
port: string | undefined;
|
|
16
17
|
rabbit_connections: string[] | undefined;
|
|
17
18
|
rabbit_exchange_name: string | undefined;
|
|
19
|
+
sentry: ISentryConfig;
|
|
18
20
|
saveRawDataWhitelist: ISaveRawDataWhitelist[];
|
|
19
21
|
metrics: IMetricsConfig;
|
|
20
22
|
lightship: {
|
|
@@ -16,5 +16,5 @@ export declare abstract class BaseController {
|
|
|
16
16
|
* Sends message to RabbitMQ Exchange
|
|
17
17
|
*/
|
|
18
18
|
private sendMessage;
|
|
19
|
-
protected sendMessageToExchange: (key: string, msg:
|
|
19
|
+
protected sendMessageToExchange: (key: string, msg: string, option?: Record<string, any> | undefined) => Promise<void>;
|
|
20
20
|
}
|
|
@@ -8,6 +8,7 @@ const IQueueConnector_1 = __importDefault(require("../../helpers/connector/inter
|
|
|
8
8
|
const AlternateExchangeCreator_1 = __importDefault(require("../../helpers/data-access/amqp/AlternateExchangeCreator"));
|
|
9
9
|
const config_1 = require("../config");
|
|
10
10
|
const ioc_1 = require("../ioc");
|
|
11
|
+
const sentry_transactions_1 = require("../../monitoring/sentry/sentry-transactions");
|
|
11
12
|
const errors_1 = require("@golemio/errors");
|
|
12
13
|
/**
|
|
13
14
|
* Base controller class, defines basic structure of a controller. ProcessData function, mandatory name
|
|
@@ -30,7 +31,7 @@ class BaseController {
|
|
|
30
31
|
throw new errors_1.GeneralError(`Sending the message to exchange failed. (${key})`, "BaseController", err, 500);
|
|
31
32
|
}
|
|
32
33
|
};
|
|
33
|
-
this.sendMessageToExchange = this.sendMessage;
|
|
34
|
+
this.sendMessageToExchange = (0, sentry_transactions_1.withSentryProducerTrace)(this.sendMessage);
|
|
34
35
|
this.name = name + "Controller";
|
|
35
36
|
this.validator = validator;
|
|
36
37
|
this.queuePrefix = config_1.config.rabbit_exchange_name + "." + name.toLowerCase();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseController.js","sourceRoot":"","sources":["../../../src/input-gateway/controllers/BaseController.ts"],"names":[],"mappings":";;;;;;AAAA,yGAA4E;AAC5E,uHAA0F;AAC1F,sCAAoC;AACpC,gCAAgE;AAChE,4CAA+C;AAG/C;;GAEG;AACH,MAAsB,cAAc;IAUhC,YAAY,IAAY,EAAE,SAAqB;QAM/C;;WAEG;QACK,gBAAW,GAAG,KAAK,EAAE,GAAW,EAAE,GAAQ,EAAE,UAAkB,EAAE,EAAiB,EAAE;YACvF,IAAI;gBACA,MAAM,EAAE,GAAG,2BAAqB,CAAC,OAAO,CAAkB,oBAAc,CAAC,aAAa,CAAC,CAAC,UAAU,EAAE,CAAC;gBACrG,MAAM,EAAE,CAAC,cAAc,CAAC,eAAM,CAAC,oBAA8B,EAAE,OAAO,EAAE;oBACpE,OAAO,EAAE,KAAK;oBACd,iBAAiB,EAAE,kCAAwB,CAAC,kBAAkB,CAAC,eAAM,CAAC,oBAAqB,CAAC;iBAC/F,CAAC,CAAC;gBACH,MAAM,EAAE,CAAC,OAAO,CAAC,eAAM,CAAC,oBAA8B,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;aAC3F;YAAC,OAAO,GAAG,EAAE;gBACV,MAAM,IAAI,qBAAY,CAAC,4CAA4C,GAAG,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;aAC1G;QACL,CAAC,CAAC;QAEQ,0BAAqB,GAAG,IAAI,CAAC,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"BaseController.js","sourceRoot":"","sources":["../../../src/input-gateway/controllers/BaseController.ts"],"names":[],"mappings":";;;;;;AAAA,yGAA4E;AAC5E,uHAA0F;AAC1F,sCAAoC;AACpC,gCAAgE;AAChE,qFAAiF;AACjF,4CAA+C;AAG/C;;GAEG;AACH,MAAsB,cAAc;IAUhC,YAAY,IAAY,EAAE,SAAqB;QAM/C;;WAEG;QACK,gBAAW,GAAG,KAAK,EAAE,GAAW,EAAE,GAAQ,EAAE,UAAkB,EAAE,EAAiB,EAAE;YACvF,IAAI;gBACA,MAAM,EAAE,GAAG,2BAAqB,CAAC,OAAO,CAAkB,oBAAc,CAAC,aAAa,CAAC,CAAC,UAAU,EAAE,CAAC;gBACrG,MAAM,EAAE,CAAC,cAAc,CAAC,eAAM,CAAC,oBAA8B,EAAE,OAAO,EAAE;oBACpE,OAAO,EAAE,KAAK;oBACd,iBAAiB,EAAE,kCAAwB,CAAC,kBAAkB,CAAC,eAAM,CAAC,oBAAqB,CAAC;iBAC/F,CAAC,CAAC;gBACH,MAAM,EAAE,CAAC,OAAO,CAAC,eAAM,CAAC,oBAA8B,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;aAC3F;YAAC,OAAO,GAAG,EAAE;gBACV,MAAM,IAAI,qBAAY,CAAC,4CAA4C,GAAG,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;aAC1G;QACL,CAAC,CAAC;QAEQ,0BAAqB,GAAG,IAAA,6CAAuB,EAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QArBxE,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,YAAY,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,eAAM,CAAC,oBAAoB,GAAG,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAC9E,CAAC;CAmBJ;AAjCD,wCAiCC"}
|
|
@@ -30,6 +30,14 @@ export declare class IntegrationEngineConfiguration implements IConfiguration {
|
|
|
30
30
|
port: string | undefined;
|
|
31
31
|
queuesBlacklist: Record<string, string[]>;
|
|
32
32
|
saveRawDataWhitelist: Record<string, any>;
|
|
33
|
+
sentry: {
|
|
34
|
+
enabled: boolean;
|
|
35
|
+
dsn: string | undefined;
|
|
36
|
+
release: string;
|
|
37
|
+
environment: string | undefined;
|
|
38
|
+
debug: boolean;
|
|
39
|
+
tracesSampleRate: number;
|
|
40
|
+
};
|
|
33
41
|
stream: {
|
|
34
42
|
wait_for_end_attempts: number;
|
|
35
43
|
wait_for_end_interval: number;
|
|
@@ -43,6 +43,14 @@ let IntegrationEngineConfiguration = exports.IntegrationEngineConfiguration = cl
|
|
|
43
43
|
this.app_version = process.env.npm_package_version;
|
|
44
44
|
this.app_name = process.env.APP_NAME || "integration-engine";
|
|
45
45
|
this.port = process.env.PORT;
|
|
46
|
+
this.sentry = {
|
|
47
|
+
enabled: process.env.SENTRY_ENABLED === "true",
|
|
48
|
+
dsn: process.env.SENTRY_DSN,
|
|
49
|
+
release: `${process.env.APP_NAME}@${process.env.npm_package_version}`,
|
|
50
|
+
environment: process.env.SENTRY_ENVIRONMENT,
|
|
51
|
+
debug: process.env.SENTRY_DEBUG === "true",
|
|
52
|
+
tracesSampleRate: process.env.SENTRY_TRACE_RATE ? parseFloat(process.env.SENTRY_TRACE_RATE) : 0,
|
|
53
|
+
};
|
|
46
54
|
this.stream = {
|
|
47
55
|
wait_for_end_attempts: parseInt(process.env.STREAM_WAIT_FOR_END_ATTEMPTS, 10) || 30,
|
|
48
56
|
wait_for_end_interval: parseInt(process.env.STREAM_WAIT_FOR_END_INTERVAL, 10) || 1000,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IntegrationEngineConfiguration.js","sourceRoot":"","sources":["../../../src/integration-engine/config/IntegrationEngineConfiguration.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4CAAwC;AACxC,uCAAsC;AAGtC;;GAEG;AAGI,IAAM,8BAA8B,4CAApC,MAAM,8BAA8B;
|
|
1
|
+
{"version":3,"file":"IntegrationEngineConfiguration.js","sourceRoot":"","sources":["../../../src/integration-engine/config/IntegrationEngineConfiguration.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { IMetricsConfig } from "../../monitoring";
|
|
2
|
+
import { ISentryConfig } from "../../monitoring/sentry/sentry-provider";
|
|
2
3
|
export interface IConfiguration {
|
|
3
4
|
DATA_BATCH_SIZE: number;
|
|
4
5
|
HOPPYGO_BASE_URL: string | undefined;
|
|
@@ -26,6 +27,7 @@ export interface IConfiguration {
|
|
|
26
27
|
datasources: Record<string, any>;
|
|
27
28
|
port: string | undefined;
|
|
28
29
|
queuesBlacklist: Record<string, string[]>;
|
|
30
|
+
sentry: ISentryConfig;
|
|
29
31
|
saveRawDataWhitelist: Record<string, any>;
|
|
30
32
|
stream: {
|
|
31
33
|
wait_for_end_attempts: number;
|
|
@@ -48,13 +48,5 @@ export declare class GeocodeApi {
|
|
|
48
48
|
getExtendedAddressFromPhoton: (lat: number, lng: number) => Promise<IPostalAddress & {
|
|
49
49
|
house_number: string;
|
|
50
50
|
}>;
|
|
51
|
-
/**
|
|
52
|
-
* Gets Address by Coordinates from Photon API extended version.
|
|
53
|
-
*
|
|
54
|
-
* @param {number} lat Latitude
|
|
55
|
-
* @param {number} lng Longitude
|
|
56
|
-
*/
|
|
57
|
-
getAddressForVehicleSharing: (lat: number, lng: number) => Promise<string | null>;
|
|
58
|
-
private fetchPhotonData;
|
|
59
51
|
private getFormattedAddress;
|
|
60
52
|
}
|
|
@@ -108,8 +108,21 @@ let GeocodeApi = exports.GeocodeApi = class GeocodeApi {
|
|
|
108
108
|
* @param {number} lng Longitude
|
|
109
109
|
*/
|
|
110
110
|
this.getAddressByLatLngFromPhoton = async (lat, lng) => {
|
|
111
|
+
const urlWithParams = new URL(this.photonApiUrlReverse);
|
|
112
|
+
urlWithParams.searchParams.append("lon", lng.toString());
|
|
113
|
+
urlWithParams.searchParams.append("lat", lat.toString());
|
|
114
|
+
urlWithParams.searchParams.append("query_string_filter", "osm_key:place");
|
|
115
|
+
urlWithParams.searchParams.append("lang", "cs");
|
|
116
|
+
let headers = {};
|
|
117
|
+
if (this.photonApiKey) {
|
|
118
|
+
headers = {
|
|
119
|
+
"x-access-token": this.photonApiKey,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
111
122
|
try {
|
|
112
|
-
const data = await
|
|
123
|
+
const data = await fetch(urlWithParams.toString(), {
|
|
124
|
+
headers,
|
|
125
|
+
}).then((response) => response.json());
|
|
113
126
|
const addressPropsFromPhoton = data.features[0].properties;
|
|
114
127
|
const address = {
|
|
115
128
|
address_country: addressPropsFromPhoton.country,
|
|
@@ -132,10 +145,28 @@ let GeocodeApi = exports.GeocodeApi = class GeocodeApi {
|
|
|
132
145
|
* @param {number} lng Longitude
|
|
133
146
|
*/
|
|
134
147
|
this.getExtendedAddressFromPhoton = async (lat, lng) => {
|
|
148
|
+
const urlWithParams = new URL(this.photonApiUrlReverse);
|
|
149
|
+
urlWithParams.searchParams.append("lon", lng.toString());
|
|
150
|
+
urlWithParams.searchParams.append("lat", lat.toString());
|
|
151
|
+
urlWithParams.searchParams.append("query_string_filter", "osm_value:house");
|
|
152
|
+
urlWithParams.searchParams.append("radius", "0.1");
|
|
153
|
+
urlWithParams.searchParams.append("lang", "cs");
|
|
154
|
+
let headers = {};
|
|
155
|
+
let data;
|
|
156
|
+
if (this.photonApiKey) {
|
|
157
|
+
headers = {
|
|
158
|
+
"x-access-token": this.photonApiKey,
|
|
159
|
+
};
|
|
160
|
+
}
|
|
135
161
|
try {
|
|
136
|
-
|
|
162
|
+
data = await fetch(urlWithParams.toString(), {
|
|
163
|
+
headers,
|
|
164
|
+
}).then((response) => response.json());
|
|
137
165
|
if (!data?.features[0]?.properties?.city && !data?.features[0]?.properties?.housenumber) {
|
|
138
|
-
|
|
166
|
+
urlWithParams.searchParams.set("query_string_filter", "osm_key:highway");
|
|
167
|
+
data = await fetch(urlWithParams.toString(), {
|
|
168
|
+
headers,
|
|
169
|
+
}).then((response) => response.json());
|
|
139
170
|
}
|
|
140
171
|
const addressPropsFromPhoton = data.features[0].properties;
|
|
141
172
|
const address = {
|
|
@@ -153,70 +184,6 @@ let GeocodeApi = exports.GeocodeApi = class GeocodeApi {
|
|
|
153
184
|
throw new errors_1.RecoverableError("Retrieving address from Photon failed.", this.constructor.name, err);
|
|
154
185
|
}
|
|
155
186
|
};
|
|
156
|
-
/**
|
|
157
|
-
* Gets Address by Coordinates from Photon API extended version.
|
|
158
|
-
*
|
|
159
|
-
* @param {number} lat Latitude
|
|
160
|
-
* @param {number} lng Longitude
|
|
161
|
-
*/
|
|
162
|
-
this.getAddressForVehicleSharing = async (lat, lng) => {
|
|
163
|
-
try {
|
|
164
|
-
let data = await this.fetchPhotonData(lat, lng, "osm_value:house");
|
|
165
|
-
if (data?.features[0]?.properties?.city && data?.features[0]?.properties?.housenumber) {
|
|
166
|
-
const addressPropsFromPhoton = data.features[0].properties;
|
|
167
|
-
if (addressPropsFromPhoton?.street) {
|
|
168
|
-
return (addressPropsFromPhoton.street +
|
|
169
|
-
" " +
|
|
170
|
-
addressPropsFromPhoton.housenumber +
|
|
171
|
-
", " +
|
|
172
|
-
addressPropsFromPhoton.city);
|
|
173
|
-
}
|
|
174
|
-
if (addressPropsFromPhoton?.locality && addressPropsFromPhoton?.locality !== addressPropsFromPhoton?.city) {
|
|
175
|
-
return (addressPropsFromPhoton.locality +
|
|
176
|
-
" " +
|
|
177
|
-
addressPropsFromPhoton.housenumber +
|
|
178
|
-
", " +
|
|
179
|
-
addressPropsFromPhoton.city);
|
|
180
|
-
}
|
|
181
|
-
return addressPropsFromPhoton.city + " " + addressPropsFromPhoton.housenumber;
|
|
182
|
-
}
|
|
183
|
-
data = await this.fetchPhotonData(lat, lng, "osm_key:highway");
|
|
184
|
-
const addressPropsFromPhoton = data?.features[0]?.properties;
|
|
185
|
-
if (addressPropsFromPhoton?.name && addressPropsFromPhoton?.city) {
|
|
186
|
-
return addressPropsFromPhoton.name + ", " + addressPropsFromPhoton.city;
|
|
187
|
-
}
|
|
188
|
-
if (addressPropsFromPhoton?.district && addressPropsFromPhoton?.district !== addressPropsFromPhoton?.city) {
|
|
189
|
-
return addressPropsFromPhoton.locality + ", " + addressPropsFromPhoton.city;
|
|
190
|
-
}
|
|
191
|
-
if (addressPropsFromPhoton?.city) {
|
|
192
|
-
return addressPropsFromPhoton.city;
|
|
193
|
-
}
|
|
194
|
-
return null;
|
|
195
|
-
}
|
|
196
|
-
catch (err) {
|
|
197
|
-
throw new errors_1.RecoverableError("Retrieving address from Photon failed.", this.constructor.name, err);
|
|
198
|
-
}
|
|
199
|
-
};
|
|
200
|
-
this.fetchPhotonData = async (lat, lng, queryFilter) => {
|
|
201
|
-
const urlWithParams = new URL(this.photonApiUrlReverse);
|
|
202
|
-
urlWithParams.searchParams.append("lon", lng.toString());
|
|
203
|
-
urlWithParams.searchParams.append("lat", lat.toString());
|
|
204
|
-
urlWithParams.searchParams.append("query_string_filter", queryFilter);
|
|
205
|
-
urlWithParams.searchParams.append("lang", "cs");
|
|
206
|
-
if (queryFilter !== "osm_key:place") {
|
|
207
|
-
urlWithParams.searchParams.append("radius", "0.1");
|
|
208
|
-
}
|
|
209
|
-
let headers = {};
|
|
210
|
-
if (this.photonApiKey) {
|
|
211
|
-
headers = {
|
|
212
|
-
"x-access-token": this.photonApiKey.trim(),
|
|
213
|
-
};
|
|
214
|
-
}
|
|
215
|
-
const response = await fetch(urlWithParams.toString(), {
|
|
216
|
-
headers,
|
|
217
|
-
});
|
|
218
|
-
return response.json();
|
|
219
|
-
};
|
|
220
187
|
this.openStreetApiUrlReverse = config.OPEN_STREET_MAP_API_URL_REVERSE;
|
|
221
188
|
this.openStreetApiUrlSearch = config.OPEN_STREET_MAP_API_URL_SEARCH;
|
|
222
189
|
this.photonApiUrlReverse = config.PHOTON_MAP_API_URL_REVERSE;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GeocodeApi.js","sourceRoot":"","sources":["../../../src/integration-engine/helpers/GeocodeApi.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"GeocodeApi.js","sourceRoot":"","sources":["../../../src/integration-engine/helpers/GeocodeApi.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,33 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
2
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
26
|
exports.IntegrationErrorHandler = void 0;
|
|
4
27
|
const helpers_1 = require("./");
|
|
5
28
|
const errors_1 = require("@golemio/errors");
|
|
29
|
+
const sentry = __importStar(require("@sentry/node"));
|
|
30
|
+
const node_1 = require("@sentry/node");
|
|
6
31
|
/**
|
|
7
32
|
* Class responsible for error handling in the app. Catches errors and based on their type performs some action.
|
|
8
33
|
*
|
|
@@ -41,15 +66,22 @@ class IntegrationErrorHandler extends errors_1.ErrorHandler {
|
|
|
41
66
|
};
|
|
42
67
|
helpers_1.log.error({ message: msg });
|
|
43
68
|
// if anything fails, process is killed
|
|
69
|
+
sentry.captureMessage(`Exiting: ${err.toString()}`, node_1.Severity.Fatal);
|
|
44
70
|
return process.exit(1);
|
|
45
71
|
}
|
|
46
72
|
static handleRecoverableError(err) {
|
|
73
|
+
sentry.setTag("status", "ack");
|
|
74
|
+
sentry.captureMessage(err.toString(), node_1.Severity.Warning);
|
|
47
75
|
return { ...err.toObject(), ack: true };
|
|
48
76
|
}
|
|
49
77
|
static handleNonRecoverableError(err) {
|
|
78
|
+
sentry.setTag("status", "nack");
|
|
79
|
+
sentry.captureException(err);
|
|
50
80
|
return { ...err.toObject(), ack: false };
|
|
51
81
|
}
|
|
52
82
|
static handleAbortError(err) {
|
|
83
|
+
sentry.setTag("status", "nack");
|
|
84
|
+
sentry.captureException(err);
|
|
53
85
|
return { ...err.toObject(), ack: false, exit: true };
|
|
54
86
|
}
|
|
55
87
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IntegrationErrorHandler.js","sourceRoot":"","sources":["../../../src/integration-engine/helpers/IntegrationErrorHandler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"IntegrationErrorHandler.js","sourceRoot":"","sources":["../../../src/integration-engine/helpers/IntegrationErrorHandler.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gCAAkC;AAClC,4CAA0G;AAC1G,qDAAuC;AACvC,uCAAwC;AAOxC;;;;GAIG;AACH,MAAa,uBAAwB,SAAQ,qBAAY;IACrD;;;;OAIG;IACI,MAAM,CAAC,MAAM,CAAC,GAAU;QAC3B,IAAI,GAAG,YAAY,qBAAY,EAAE;YAC7B,IAAI,GAAG,YAAY,yBAAgB,EAAE;gBACjC,sCAAsC;gBACtC,aAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACd,OAAO,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;aAC3C;iBAAM;gBACH,sBAAsB;gBACtB,aAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACf,OAAO,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC;aAC9C;SACJ;QAED,8BAA8B;QAC9B,qCAAqC;QACrC,IAAI,GAAG,YAAY,mBAAU,EAAE;YAC3B,aAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACf,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;SACrC;QAED,qCAAqC;QACrC,MAAM,GAAG,GAAG;YACR,OAAO,EAAE,4CAA4C;YACrD,KAAK,EAAE,GAAG,CAAC,OAAO;YAClB,KAAK,EAAE,GAAG,CAAC,KAAK;SACnB,CAAC;QACF,aAAG,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;QAC5B,uCAAuC;QACvC,MAAM,CAAC,cAAc,CAAC,YAAY,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,eAAQ,CAAC,KAAK,CAAC,CAAC;QACpE,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAEO,MAAM,CAAC,sBAAsB,CAAC,GAAqB;QACvD,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC/B,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,eAAQ,CAAC,OAAO,CAAC,CAAC;QACxD,OAAO,EAAE,GAAG,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;IAC5C,CAAC;IAEO,MAAM,CAAC,yBAAyB,CAAC,GAAiB;QACtD,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAChC,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC7B,OAAO,EAAE,GAAG,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;IAC7C,CAAC;IAEO,MAAM,CAAC,gBAAgB,CAAC,GAAe;QAC3C,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAChC,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC7B,OAAO,EAAE,GAAG,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACzD,CAAC;CACJ;AAvDD,0DAuDC"}
|
|
@@ -2,11 +2,12 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.QueueManager = void 0;
|
|
4
4
|
const connectors_1 = require("../connectors");
|
|
5
|
+
const sentry_transactions_1 = require("../../monitoring/sentry/sentry-transactions");
|
|
5
6
|
class QueueManager {
|
|
6
7
|
static sendMessageToExchange(queuePrefix, queueName, data, options = {}) {
|
|
7
8
|
return QueueManager.sendMessage(`workers.${queuePrefix}.${queueName}`, JSON.stringify(data), options);
|
|
8
9
|
}
|
|
9
10
|
}
|
|
10
11
|
exports.QueueManager = QueueManager;
|
|
11
|
-
QueueManager.sendMessage = connectors_1.AMQPConnector.sendMessage;
|
|
12
|
+
QueueManager.sendMessage = (0, sentry_transactions_1.withSentryProducerTrace)(connectors_1.AMQPConnector.sendMessage);
|
|
12
13
|
//# sourceMappingURL=QueueManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueueManager.js","sourceRoot":"","sources":["../../../src/integration-engine/queueprocessors/QueueManager.ts"],"names":[],"mappings":";;;AAAA,8CAA+C;
|
|
1
|
+
{"version":3,"file":"QueueManager.js","sourceRoot":"","sources":["../../../src/integration-engine/queueprocessors/QueueManager.ts"],"names":[],"mappings":";;;AAAA,8CAA+C;AAC/C,qFAAiF;AAGjF,MAAa,YAAY;IACd,MAAM,CAAC,qBAAqB,CAC/B,WAAmB,EACnB,SAAiB,EACjB,IAAyB,EACzB,UAA2B,EAAE;QAE7B,OAAO,YAAY,CAAC,WAAW,CAAC,WAAW,WAAW,IAAI,SAAS,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;IAC1G,CAAC;;AARL,oCAWC;AADkB,wBAAW,GAAG,IAAA,6CAAuB,EAAC,0BAAa,CAAC,WAAW,CAAC,CAAC"}
|
|
@@ -1,4 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
2
25
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
27
|
};
|
|
@@ -7,8 +30,11 @@ exports.QueueProcessor = void 0;
|
|
|
7
30
|
const AlternateExchangeCreator_1 = __importDefault(require("../../helpers/data-access/amqp/AlternateExchangeCreator"));
|
|
8
31
|
const config_1 = require("../config");
|
|
9
32
|
const helpers_1 = require("../helpers");
|
|
10
|
-
const
|
|
33
|
+
const sentry_transactions_1 = require("../../monitoring/sentry/sentry-transactions");
|
|
11
34
|
const errors_1 = require("@golemio/errors");
|
|
35
|
+
const AbortableTask_1 = require("../workers/helpers/AbortableTask");
|
|
36
|
+
const sentry = __importStar(require("@sentry/node"));
|
|
37
|
+
const node_1 = require("@sentry/node");
|
|
12
38
|
class QueueProcessor {
|
|
13
39
|
constructor(channel, definition, moduleName) {
|
|
14
40
|
/**
|
|
@@ -24,7 +50,7 @@ class QueueProcessor {
|
|
|
24
50
|
// default processor
|
|
25
51
|
await this.defaultProcessor(msg, q.name, async () => {
|
|
26
52
|
if (q.consume) {
|
|
27
|
-
return q.consume(msg);
|
|
53
|
+
return (0, sentry_transactions_1.withSentryConsumerTrace)(q.consume)(msg);
|
|
28
54
|
}
|
|
29
55
|
if (q.worker && q.workerMethod) {
|
|
30
56
|
const worker = new q.worker();
|
|
@@ -34,7 +60,7 @@ class QueueProcessor {
|
|
|
34
60
|
// eslint-disable-next-line max-len
|
|
35
61
|
`[AMQP QueueProcessor] Worker method ${q.workerMethod} does not exist on worker ${worker.constructor.name}`, this.constructor.name);
|
|
36
62
|
}
|
|
37
|
-
return ((msg) => AbortableTask_1.AbortableTask.from(workerMethod.bind(worker)(msg), `${this.definition.queuePrefix}.${q.workerMethod}`))(msg);
|
|
63
|
+
return (0, sentry_transactions_1.withSentryConsumerTrace)((msg) => AbortableTask_1.AbortableTask.from(workerMethod.bind(worker)(msg), `${this.definition.queuePrefix}.${q.workerMethod}`))(msg);
|
|
38
64
|
}
|
|
39
65
|
throw new errors_1.FatalError("[AMQP QueueProcessor] validateAndExecute method or worker and its method must be defined", this.constructor.name);
|
|
40
66
|
});
|
|
@@ -82,6 +108,7 @@ class QueueProcessor {
|
|
|
82
108
|
this.channel.nack(msg, false, false);
|
|
83
109
|
}
|
|
84
110
|
if (errObject.exit) {
|
|
111
|
+
sentry.captureMessage(`Exiting: ${err.toString()}`, node_1.Severity.Fatal);
|
|
85
112
|
process.exit(1);
|
|
86
113
|
}
|
|
87
114
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueueProcessor.js","sourceRoot":"","sources":["../../../src/integration-engine/queueprocessors/QueueProcessor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"QueueProcessor.js","sourceRoot":"","sources":["../../../src/integration-engine/queueprocessors/QueueProcessor.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,6 @@ import { DataSourceStream } from "../datasources/DataSourceStream";
|
|
|
3
3
|
* @deprecated Use AbstractWorker instead
|
|
4
4
|
*/
|
|
5
5
|
export declare class BaseWorker {
|
|
6
|
-
protected sendMessageToExchange: (key: string, msg: string,
|
|
6
|
+
protected sendMessageToExchange: (key: string, msg: string, option?: Record<string, any> | undefined) => Promise<boolean>;
|
|
7
7
|
protected processDataStream: (dataSourceStream: Promise<DataSourceStream>, onDataFunction: (data: any) => Promise<void>) => Promise<void>;
|
|
8
8
|
}
|
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.BaseWorker = void 0;
|
|
4
4
|
const connectors_1 = require("../connectors");
|
|
5
|
+
const sentry_transactions_1 = require("../../monitoring/sentry/sentry-transactions");
|
|
5
6
|
const errors_1 = require("@golemio/errors");
|
|
6
7
|
/**
|
|
7
8
|
* @deprecated Use AbstractWorker instead
|
|
8
9
|
*/
|
|
9
10
|
class BaseWorker {
|
|
10
11
|
constructor() {
|
|
11
|
-
this.sendMessageToExchange = connectors_1.AMQPConnector.sendMessage;
|
|
12
|
+
this.sendMessageToExchange = (0, sentry_transactions_1.withSentryProducerTrace)(connectors_1.AMQPConnector.sendMessage);
|
|
12
13
|
this.processDataStream = async (dataSourceStream, onDataFunction) => {
|
|
13
14
|
let dataStream;
|
|
14
15
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseWorker.js","sourceRoot":"","sources":["../../../src/integration-engine/workers/BaseWorker.ts"],"names":[],"mappings":";;;AAAA,8CAA+C;AAE/C,4CAA+C;AAE/C;;GAEG;AACH,MAAa,UAAU;IAAvB;QACc,0BAAqB,GAAG,0BAAa,CAAC,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"BaseWorker.js","sourceRoot":"","sources":["../../../src/integration-engine/workers/BaseWorker.ts"],"names":[],"mappings":";;;AAAA,8CAA+C;AAE/C,qFAAiF;AACjF,4CAA+C;AAE/C;;GAEG;AACH,MAAa,UAAU;IAAvB;QACc,0BAAqB,GAAG,IAAA,6CAAuB,EAAC,0BAAa,CAAC,WAAW,CAAC,CAAC;QAE3E,sBAAiB,GAAG,KAAK,EAC/B,gBAA2C,EAC3C,cAA4C,EAC/B,EAAE;YACf,IAAI,UAA4B,CAAC;YAEjC,IAAI;gBACA,UAAU,GAAG,MAAM,gBAAgB,CAAC;aACvC;YAAC,OAAO,GAAG,EAAE;gBACV,MAAM,IAAI,qBAAY,CAAC,0BAA0B,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;aAClF;YAED,IAAI;gBACA,MAAM,UAAU,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE,CAAC;aAC/D;YAAC,OAAO,GAAG,EAAE;gBACV,MAAM,IAAI,qBAAY,CAAC,6BAA6B,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;aACrF;QACL,CAAC,CAAC;IACN,CAAC;CAAA;AArBD,gCAqBC"}
|
package/dist/monitoring/index.js
CHANGED
|
@@ -15,5 +15,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./opentelemetry/trace-provider"), exports);
|
|
18
|
+
__exportStar(require("./sentry/sentry-provider"), exports);
|
|
18
19
|
__exportStar(require("./metrics"), exports);
|
|
19
20
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/monitoring/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iEAA+C;AAC/C,4CAA0B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/monitoring/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iEAA+C;AAC/C,2DAAyC;AACzC,4CAA0B"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import express from "express";
|
|
2
|
+
export interface ISentryConfig {
|
|
3
|
+
enabled: boolean;
|
|
4
|
+
dsn?: string;
|
|
5
|
+
release?: string;
|
|
6
|
+
environment?: string;
|
|
7
|
+
debug?: boolean;
|
|
8
|
+
tracesSampleRate?: number;
|
|
9
|
+
}
|
|
10
|
+
export declare const initSentry: (sentryConfig: ISentryConfig, appName: string, app?: express.Application) => void;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.initSentry = void 0;
|
|
27
|
+
const sentry = __importStar(require("@sentry/node"));
|
|
28
|
+
const tracer = __importStar(require("@sentry/tracing"));
|
|
29
|
+
const errors_1 = require("@golemio/errors");
|
|
30
|
+
const initSentry = (sentryConfig, appName, app) => {
|
|
31
|
+
if (!sentryConfig.enabled || !sentryConfig.dsn)
|
|
32
|
+
return;
|
|
33
|
+
const options = {
|
|
34
|
+
release: sentryConfig.release,
|
|
35
|
+
dsn: sentryConfig.dsn,
|
|
36
|
+
environment: sentryConfig.environment,
|
|
37
|
+
initialScope: {
|
|
38
|
+
tags: { appName },
|
|
39
|
+
},
|
|
40
|
+
debug: sentryConfig.debug,
|
|
41
|
+
integrations: [
|
|
42
|
+
new sentry.Integrations.Http({ tracing: true }),
|
|
43
|
+
new tracer.Integrations.Postgres(),
|
|
44
|
+
...(app ? [new tracer.Integrations.Express({ app })] : []),
|
|
45
|
+
],
|
|
46
|
+
tracesSampleRate: sentryConfig.tracesSampleRate,
|
|
47
|
+
beforeSend: (event, hint) => {
|
|
48
|
+
const exception = hint?.originalException;
|
|
49
|
+
if (exception instanceof errors_1.AbstractGolemioError) {
|
|
50
|
+
event.fingerprint = [
|
|
51
|
+
// replacing "{{ default }}",
|
|
52
|
+
String(exception.name),
|
|
53
|
+
String(exception.className),
|
|
54
|
+
String(exception.status),
|
|
55
|
+
String(exception.info),
|
|
56
|
+
String(exception.stack),
|
|
57
|
+
];
|
|
58
|
+
}
|
|
59
|
+
return event;
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
sentry.init(options);
|
|
63
|
+
};
|
|
64
|
+
exports.initSentry = initSentry;
|
|
65
|
+
//# sourceMappingURL=sentry-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sentry-provider.js","sourceRoot":"","sources":["../../../src/monitoring/sentry/sentry-provider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,qDAAuC;AACvC,wDAA0C;AAC1C,4CAAuD;AAWhD,MAAM,UAAU,GAAG,CAAC,YAA2B,EAAE,OAAe,EAAE,GAAyB,EAAE,EAAE;IAClG,IAAI,CAAC,YAAY,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG;QAAE,OAAO;IAEvD,MAAM,OAAO,GAAuB;QAChC,OAAO,EAAE,YAAY,CAAC,OAAO;QAC7B,GAAG,EAAE,YAAY,CAAC,GAAG;QACrB,WAAW,EAAE,YAAY,CAAC,WAAW;QACrC,YAAY,EAAE;YACV,IAAI,EAAE,EAAE,OAAO,EAAE;SACpB;QACD,KAAK,EAAE,YAAY,CAAC,KAAK;QACzB,YAAY,EAAE;YACV,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC/C,IAAI,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE;YAClC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7D;QACD,gBAAgB,EAAE,YAAY,CAAC,gBAAgB;QAC/C,UAAU,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YACxB,MAAM,SAAS,GAAG,IAAI,EAAE,iBAAiB,CAAC;YAE1C,IAAI,SAAS,YAAY,6BAAoB,EAAE;gBAC3C,KAAK,CAAC,WAAW,GAAG;oBAChB,6BAA6B;oBAC7B,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;oBACtB,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC;oBAC3B,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;oBACxB,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;oBACtB,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;iBAC1B,CAAC;aACL;YAED,OAAO,KAAK,CAAC;QACjB,CAAC;KACJ,CAAC;IAEF,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC,CAAC;AApCW,QAAA,UAAU,cAoCrB"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import amqplib from "amqplib";
|
|
2
|
+
type ProduceFunction<T> = (key: string, msg: string, option?: Record<string, any>) => Promise<T>;
|
|
3
|
+
type ConsumeFunction<T> = (msg: amqplib.Message | null, ...args: any[]) => Promise<T>;
|
|
4
|
+
export declare const withSentryProducerTrace: <T>(fn: ProduceFunction<T>) => ProduceFunction<T>;
|
|
5
|
+
export declare const withSentryConsumerTrace: <T>(fn: ConsumeFunction<T>) => ConsumeFunction<T>;
|
|
6
|
+
export {};
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.withSentryConsumerTrace = exports.withSentryProducerTrace = void 0;
|
|
27
|
+
const sentry = __importStar(require("@sentry/node"));
|
|
28
|
+
var SentryTransactions;
|
|
29
|
+
(function (SentryTransactions) {
|
|
30
|
+
SentryTransactions["PRODUCER"] = "rabbitmq.producer";
|
|
31
|
+
SentryTransactions["CONSUMER"] = "rabbitmq.consumer";
|
|
32
|
+
})(SentryTransactions || (SentryTransactions = {}));
|
|
33
|
+
const withSentryProducerTrace = (fn) => {
|
|
34
|
+
return async (key, ...args) => {
|
|
35
|
+
const queue = key.split(".").slice(-2).join(".");
|
|
36
|
+
const parentScope = sentry.getCurrentHub().getScope()?.getTransaction();
|
|
37
|
+
let currentScope;
|
|
38
|
+
if (parentScope) {
|
|
39
|
+
currentScope = parentScope.startChild({
|
|
40
|
+
op: SentryTransactions.PRODUCER,
|
|
41
|
+
description: queue || key,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
currentScope = sentry.startTransaction({
|
|
46
|
+
op: SentryTransactions.PRODUCER,
|
|
47
|
+
name: queue || key,
|
|
48
|
+
});
|
|
49
|
+
sentry.configureScope((scope) => {
|
|
50
|
+
scope.setSpan(currentScope);
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
try {
|
|
54
|
+
return await fn(key, ...args);
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
sentry.captureException(err);
|
|
58
|
+
throw err;
|
|
59
|
+
}
|
|
60
|
+
finally {
|
|
61
|
+
currentScope.finish();
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
|
+
exports.withSentryProducerTrace = withSentryProducerTrace;
|
|
66
|
+
const withSentryConsumerTrace = (fn) => {
|
|
67
|
+
return async (msg, ...args) => {
|
|
68
|
+
const queue = msg?.fields.routingKey.split(".").slice(-2).join(".");
|
|
69
|
+
const transaction = sentry.startTransaction({
|
|
70
|
+
op: SentryTransactions.CONSUMER,
|
|
71
|
+
name: queue || msg?.fields.routingKey || "unknown",
|
|
72
|
+
});
|
|
73
|
+
sentry.configureScope((scope) => {
|
|
74
|
+
scope.setSpan(transaction);
|
|
75
|
+
});
|
|
76
|
+
try {
|
|
77
|
+
return await fn(msg, ...args);
|
|
78
|
+
}
|
|
79
|
+
catch (err) {
|
|
80
|
+
sentry.captureException(err);
|
|
81
|
+
throw err;
|
|
82
|
+
}
|
|
83
|
+
finally {
|
|
84
|
+
transaction.finish();
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
};
|
|
88
|
+
exports.withSentryConsumerTrace = withSentryConsumerTrace;
|
|
89
|
+
//# sourceMappingURL=sentry-transactions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sentry-transactions.js","sourceRoot":"","sources":["../../../src/monitoring/sentry/sentry-transactions.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAAuC;AAIvC,IAAK,kBAGJ;AAHD,WAAK,kBAAkB;IACnB,oDAA8B,CAAA;IAC9B,oDAA8B,CAAA;AAClC,CAAC,EAHI,kBAAkB,KAAlB,kBAAkB,QAGtB;AAKM,MAAM,uBAAuB,GAAG,CAAI,EAAsB,EAAsB,EAAE;IACrF,OAAO,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE;QAC1B,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEjD,MAAM,WAAW,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC,QAAQ,EAAE,EAAE,cAAc,EAAE,CAAC;QACxE,IAAI,YAAgC,CAAC;QAErC,IAAI,WAAW,EAAE;YACb,YAAY,GAAG,WAAW,CAAC,UAAU,CAAC;gBAClC,EAAE,EAAE,kBAAkB,CAAC,QAAQ;gBAC/B,WAAW,EAAE,KAAK,IAAI,GAAG;aAC5B,CAAC,CAAC;SACN;aAAM;YACH,YAAY,GAAG,MAAM,CAAC,gBAAgB,CAAC;gBACnC,EAAE,EAAE,kBAAkB,CAAC,QAAQ;gBAC/B,IAAI,EAAE,KAAK,IAAI,GAAG;aACrB,CAAC,CAAC;YAEH,MAAM,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC5B,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAChC,CAAC,CAAC,CAAC;SACN;QAED,IAAI;YACA,OAAO,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;SACjC;QAAC,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAC7B,MAAM,GAAG,CAAC;SACb;gBAAS;YACN,YAAY,CAAC,MAAM,EAAE,CAAC;SACzB;IACL,CAAC,CAAC;AACN,CAAC,CAAC;AAhCW,QAAA,uBAAuB,2BAgClC;AAEK,MAAM,uBAAuB,GAAG,CAAI,EAAsB,EAAsB,EAAE;IACrF,OAAO,KAAK,EAAE,GAA2B,EAAE,GAAG,IAAS,EAAE,EAAE;QACvD,MAAM,KAAK,GAAG,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEpE,MAAM,WAAW,GAAG,MAAM,CAAC,gBAAgB,CAAC;YACxC,EAAE,EAAE,kBAAkB,CAAC,QAAQ;YAC/B,IAAI,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,CAAC,UAAU,IAAI,SAAS;SACrD,CAAC,CAAC;QAEH,MAAM,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE,EAAE;YAC5B,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,IAAI;YACA,OAAO,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;SACjC;QAAC,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAC7B,MAAM,GAAG,CAAC;SACb;gBAAS;YACN,WAAW,CAAC,MAAM,EAAE,CAAC;SACxB;IACL,CAAC,CAAC;AACN,CAAC,CAAC;AAtBW,QAAA,uBAAuB,2BAsBlC"}
|
|
@@ -17,6 +17,14 @@ export declare class OutputGatewayConfiguration {
|
|
|
17
17
|
postgres_pool_idle_timeout: string | undefined;
|
|
18
18
|
redis_connection: string | undefined;
|
|
19
19
|
redis_ttl: string | undefined;
|
|
20
|
+
sentry: {
|
|
21
|
+
enabled: boolean;
|
|
22
|
+
dsn: string | undefined;
|
|
23
|
+
release: string;
|
|
24
|
+
environment: string | undefined;
|
|
25
|
+
debug: boolean;
|
|
26
|
+
tracesSampleRate: number;
|
|
27
|
+
};
|
|
20
28
|
metrics: {
|
|
21
29
|
enabled: boolean;
|
|
22
30
|
port: number;
|
|
@@ -30,6 +30,14 @@ let OutputGatewayConfiguration = exports.OutputGatewayConfiguration = class Outp
|
|
|
30
30
|
this.postgres_pool_idle_timeout = process.env.POSTGRES_POOL_IDLE_TIMEOUT;
|
|
31
31
|
this.redis_connection = process.env.REDIS_CONN;
|
|
32
32
|
this.redis_ttl = process.env.REDIS_DEFAULT_TTL;
|
|
33
|
+
this.sentry = {
|
|
34
|
+
enabled: process.env.SENTRY_ENABLED === "true",
|
|
35
|
+
dsn: process.env.SENTRY_DSN,
|
|
36
|
+
release: `${process.env.APP_NAME}@${process.env.npm_package_version}`,
|
|
37
|
+
environment: process.env.SENTRY_ENVIRONMENT,
|
|
38
|
+
debug: process.env.SENTRY_DEBUG === "true",
|
|
39
|
+
tracesSampleRate: process.env.SENTRY_TRACE_RATE ? parseFloat(process.env.SENTRY_TRACE_RATE) : 0,
|
|
40
|
+
};
|
|
33
41
|
this.metrics = {
|
|
34
42
|
enabled: process.env.METRICS_ENABLED === "true",
|
|
35
43
|
port: process.env.METRICS_PORT ? parseInt(process.env.METRICS_PORT, 10) : 9001,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OutputGatewayConfiguration.js","sourceRoot":"","sources":["../../../src/output-gateway/config/OutputGatewayConfiguration.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,uCAAsC;AAG/B,IAAM,0BAA0B,wCAAhC,MAAM,0BAA0B;
|
|
1
|
+
{"version":3,"file":"OutputGatewayConfiguration.js","sourceRoot":"","sources":["../../../src/output-gateway/config/OutputGatewayConfiguration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
const sentry = __importStar(require("@sentry/node"));
|
|
27
|
+
exports.default = sentry;
|
|
28
|
+
//# sourceMappingURL=sentry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sentry.js","sourceRoot":"","sources":["../../src/shared/sentry.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAAuC;AACvC,kBAAe,MAAM,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@golemio/core",
|
|
3
|
-
"version": "1.20.1-
|
|
3
|
+
"version": "1.20.1-rc.1707968557",
|
|
4
4
|
"description": "Golemio Core Module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -74,8 +74,8 @@
|
|
|
74
74
|
"@azure/data-tables": "^13.3.0",
|
|
75
75
|
"@azure/identity": "^4.5.0",
|
|
76
76
|
"@azure/storage-blob": "^12.26.0",
|
|
77
|
-
"@golemio/errors": "2.0.
|
|
78
|
-
"@golemio/validator": "0.3.
|
|
77
|
+
"@golemio/errors": "2.0.4",
|
|
78
|
+
"@golemio/validator": "0.3.5",
|
|
79
79
|
"@google-cloud/storage": "^7.11.0",
|
|
80
80
|
"@opentelemetry/api": "^1.0.4",
|
|
81
81
|
"@opentelemetry/exporter-jaeger": "^1.14.0",
|
|
@@ -87,6 +87,8 @@
|
|
|
87
87
|
"@opentelemetry/resources": "^1.14.0",
|
|
88
88
|
"@opentelemetry/sdk-trace-base": "^1.14.0",
|
|
89
89
|
"@opentelemetry/sdk-trace-node": "^1.14.0",
|
|
90
|
+
"@sentry/node": "^6.19.7",
|
|
91
|
+
"@sentry/tracing": "^6.19.7",
|
|
90
92
|
"@types/express": "^4.17.21",
|
|
91
93
|
"@types/geojson": "^7946.0.10",
|
|
92
94
|
"@types/luxon": "^2.3.1",
|