@mts-pjsc/bretrics 1.0.0 → 1.0.3
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 +10 -10
- package/dist/index.d.ts +3 -4
- package/dist/index.js +9 -8
- package/dist/index.js.map +1 -1
- package/package.json +20 -19
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
[](CODE_OF_CONDUCT.md)
|
|
4
4
|
[](https://github.com/LabEG/reca/blob/main/LICENSE)
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# Bretrics - Realtime user Browser Monitoring
|
|
7
7
|
|
|
8
8
|
Monitor the performance of the user's browser and code for real users. Allows you to collect WebVitals metrics, performance and business metrics through the Prometheuse monitoring system.
|
|
9
9
|
|
|
@@ -36,10 +36,10 @@ yarn add @mts-pjsc/bretrics
|
|
|
36
36
|
The package has a pre-configured monitoring mode that includes the necessary webvitals metrics.
|
|
37
37
|
|
|
38
38
|
``` typescript
|
|
39
|
-
import {
|
|
39
|
+
import {bretrics} from "@mts-pjsc/bretrics";
|
|
40
40
|
|
|
41
|
-
|
|
42
|
-
.setup({apiPath: "/
|
|
41
|
+
bretrics
|
|
42
|
+
.setup({apiPath: "/bretrics"}) // <-- microservice deploy location
|
|
43
43
|
.useDefaultMonitoring()
|
|
44
44
|
.sendMetrics({my_metric: 5}); // <-- custom metrics
|
|
45
45
|
```
|
|
@@ -51,10 +51,10 @@ If you need to send custom metric, you must use the `sendMetrics` method.
|
|
|
51
51
|
Prometheus labels can be set as default for all metrics, or individually for each value.
|
|
52
52
|
|
|
53
53
|
``` typescript
|
|
54
|
-
import {
|
|
54
|
+
import {bretrics} from "@mts-pjsc/bretrics";
|
|
55
55
|
|
|
56
|
-
|
|
57
|
-
.setup({apiPath: "/
|
|
56
|
+
bretrics
|
|
57
|
+
.setup({apiPath: "/bretrics"})
|
|
58
58
|
.useDefaultMonitoring()
|
|
59
59
|
.setLabels({stage: "beta", path: location.pathname})
|
|
60
60
|
.sendMetrics({
|
|
@@ -67,14 +67,14 @@ webmon
|
|
|
67
67
|
|
|
68
68
|
The default labels will be added to the metrics if you didn't pass them in the `sendMetrics` method.
|
|
69
69
|
|
|
70
|
-
### Example
|
|
70
|
+
### Example Bretrics customization
|
|
71
71
|
|
|
72
72
|
The library exports the web monitoring constructor class, so you can inherit from it and implement logic according to OOP principles.
|
|
73
73
|
|
|
74
74
|
``` typescript
|
|
75
|
-
import {
|
|
75
|
+
import {Bretrics} from "@mts-pjsc/bretrics";
|
|
76
76
|
|
|
77
|
-
export class
|
|
77
|
+
export class BretricsService extends Bretrics {
|
|
78
78
|
|
|
79
79
|
public override sendMetrics (metric: Record<string, number>): this {
|
|
80
80
|
super.sendMetrics(metric);
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { Metric } from "web-vitals";
|
|
2
2
|
import type { IMetric } from "./interfaces/IMetric";
|
|
3
|
-
export declare class
|
|
3
|
+
export declare class Bretrics {
|
|
4
4
|
apiPath: string;
|
|
5
5
|
labels: Record<string, number | string>;
|
|
6
6
|
sendWebVitalsMetrics(): this;
|
|
@@ -14,5 +14,4 @@ export declare class WebMonitoring {
|
|
|
14
14
|
protected prepareData(metrics: Record<string, IMetric | number>): Record<string, IMetric | number>;
|
|
15
15
|
protected getDeviceType(): string;
|
|
16
16
|
}
|
|
17
|
-
export declare const
|
|
18
|
-
export declare const webmon: WebMonitoring;
|
|
17
|
+
export declare const bretrics: Bretrics;
|
package/dist/index.js
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
import { onLCP,
|
|
2
|
-
export class
|
|
1
|
+
import { onLCP, onCLS, onFCP, onINP, onTTFB } from "web-vitals";
|
|
2
|
+
export class Bretrics {
|
|
3
3
|
constructor() {
|
|
4
|
-
this.apiPath = "/
|
|
4
|
+
this.apiPath = "/bretrics";
|
|
5
5
|
this.labels = {};
|
|
6
6
|
}
|
|
7
7
|
sendWebVitalsMetrics() {
|
|
8
8
|
onLCP((metric) => this.sendWebVitals(metric));
|
|
9
|
-
onFID((metric) => this.sendWebVitals(metric));
|
|
10
9
|
onCLS((metric) => this.sendWebVitals(metric));
|
|
11
10
|
onFCP((metric) => this.sendWebVitals(metric));
|
|
12
11
|
onINP((metric) => this.sendWebVitals(metric));
|
|
@@ -56,7 +55,6 @@ export class WebMonitoring {
|
|
|
56
55
|
Reflect.set(webmonMetrics, webVitalsMetric.name.toLowerCase(), webVitalsMetric.value);
|
|
57
56
|
this.sendToMicroservice(webmonMetrics);
|
|
58
57
|
}
|
|
59
|
-
// eslint-disable-next-line max-statements
|
|
60
58
|
sendToMicroservice(metrics) {
|
|
61
59
|
const path = `${this.apiPath}/send-metrics/metrics`;
|
|
62
60
|
const body = JSON.stringify(this.prepareData(metrics));
|
|
@@ -98,17 +96,20 @@ export class WebMonitoring {
|
|
|
98
96
|
}
|
|
99
97
|
return sendMetrics;
|
|
100
98
|
}
|
|
99
|
+
// eslint-disable-next-line class-methods-use-this
|
|
101
100
|
getDeviceType() {
|
|
102
101
|
const ua = navigator.userAgent;
|
|
102
|
+
// eslint-disable-next-line prefer-named-capture-group
|
|
103
103
|
if ((/(tablet|ipad|playbook|silk)|(android(?!.*mobi))/iu).test(ua)) {
|
|
104
104
|
return "tablet";
|
|
105
105
|
}
|
|
106
|
-
if (
|
|
106
|
+
if (
|
|
107
|
+
// eslint-disable-next-line prefer-named-capture-group
|
|
108
|
+
(/Mobile|iP(hone|od)|Android|BlackBerry|IEMobile|Kindle|Silk-Accelerated|(hpw|web)OS|Opera M(obi|ini)/u).test(ua)) {
|
|
107
109
|
return "mobile";
|
|
108
110
|
}
|
|
109
111
|
return "desktop";
|
|
110
112
|
}
|
|
111
113
|
}
|
|
112
|
-
export const
|
|
113
|
-
export const webmon = webmonitoring;
|
|
114
|
+
export const bretrics = new Bretrics();
|
|
114
115
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mts-pjsc/bretrics",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "Web Monitoring",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -13,12 +13,12 @@
|
|
|
13
13
|
"scripts": {
|
|
14
14
|
"build": "npm run clean && tsc && npm run clean:dist-tests && npm run test:module",
|
|
15
15
|
"clean": "rimraf ./dist",
|
|
16
|
-
"cs:eslint": "eslint --fix -c .
|
|
16
|
+
"cs:eslint": "eslint --fix -c eslint.config.js --ext .tsx,.ts,.jsx,.js ./src/",
|
|
17
17
|
"clean:dist-tests": "rimraf ./dist/__fixtures__ && rimraf ./dist/__tests__",
|
|
18
18
|
"test": "mocha --parallel src/__tests__/*.spec.tsx",
|
|
19
19
|
"test:watch": "mocha --parallel --watch --watch-files src/**/*.ts,src/**/*.tsx src/__tests__/*.spec.tsx",
|
|
20
20
|
"test:module": "node ./dist/index.js",
|
|
21
|
-
"release": "
|
|
21
|
+
"release": "cliff-jumper --name '@mts-pjsc/image-optimize' --package-path '.' --no-skip-changelog --no-skip-tag",
|
|
22
22
|
"prepublishOnly": "npm run test && npm run build",
|
|
23
23
|
"prepare": "husky install"
|
|
24
24
|
},
|
|
@@ -28,26 +28,27 @@
|
|
|
28
28
|
],
|
|
29
29
|
"lint-staged": {
|
|
30
30
|
"./src/**/*.(ts|tsx|js|jsx)": [
|
|
31
|
-
"eslint --fix -c .
|
|
31
|
+
"eslint --fix -c eslint.config.js --ext .tsx,.ts,.jsx,.js"
|
|
32
32
|
]
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"web-vitals": "^
|
|
35
|
+
"web-vitals": "^5.0.3"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
|
-
"@commitlint/cli": "^
|
|
39
|
-
"@commitlint/config-conventional": "^
|
|
40
|
-
"@
|
|
41
|
-
"@
|
|
42
|
-
"@types/
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
"
|
|
49
|
-
"
|
|
50
|
-
"
|
|
51
|
-
"
|
|
38
|
+
"@commitlint/cli": "^19.8.1",
|
|
39
|
+
"@commitlint/config-conventional": "^19.8.1",
|
|
40
|
+
"@favware/cliff-jumper": "^6.0.0",
|
|
41
|
+
"@labeg/code-style": "^6.5.0",
|
|
42
|
+
"@types/chai": "^5.2.2",
|
|
43
|
+
"@types/mocha": "^10.0.10",
|
|
44
|
+
"chai": "^5.2.1",
|
|
45
|
+
"global-jsdom": "^26.0.0",
|
|
46
|
+
"husky": "^9.1.7",
|
|
47
|
+
"jsdom": "^26.1.0",
|
|
48
|
+
"lint-staged": "^16.1.2",
|
|
49
|
+
"mocha": "^11.7.1",
|
|
50
|
+
"rimraf": "^6.0.1",
|
|
51
|
+
"ts-node": "^10.9.2",
|
|
52
|
+
"typescript": "^5.8.3"
|
|
52
53
|
}
|
|
53
54
|
}
|