@promster/hapi 6.1.1 → 8.0.0
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/promster-hapi.cjs.dev.js +35 -39
- package/dist/promster-hapi.cjs.prod.js +35 -39
- package/package.json +10 -8
- package/readme.md +1 -2
|
@@ -13,13 +13,11 @@ var merge__default = /*#__PURE__*/_interopDefault(merge);
|
|
|
13
13
|
|
|
14
14
|
var pkg = {
|
|
15
15
|
name: "@promster/hapi",
|
|
16
|
-
version: "
|
|
16
|
+
version: "8.0.0",
|
|
17
17
|
description: "Hapi server integrations of promster",
|
|
18
18
|
main: "dist/promster-hapi.cjs.js",
|
|
19
19
|
typings: "dist/promster-hapi.cjs.d.ts",
|
|
20
20
|
types: "dist/promster-hapi.cjs.d.ts",
|
|
21
|
-
scripts: {
|
|
22
|
-
},
|
|
23
21
|
files: [
|
|
24
22
|
"readme.md",
|
|
25
23
|
"package.json",
|
|
@@ -31,12 +29,13 @@ var pkg = {
|
|
|
31
29
|
access: "public"
|
|
32
30
|
},
|
|
33
31
|
engines: {
|
|
34
|
-
node: ">=
|
|
35
|
-
npm: ">=6
|
|
32
|
+
node: ">=14",
|
|
33
|
+
npm: ">=6"
|
|
36
34
|
},
|
|
37
35
|
repository: {
|
|
38
36
|
type: "git",
|
|
39
|
-
url: "
|
|
37
|
+
url: "https://github.com/tdeekens/flopflip.git",
|
|
38
|
+
directory: "packages/hapi"
|
|
40
39
|
},
|
|
41
40
|
author: "Tobias Deekens <nerd@tdeekens.name>",
|
|
42
41
|
license: "MIT",
|
|
@@ -50,26 +49,23 @@ var pkg = {
|
|
|
50
49
|
"prometheus"
|
|
51
50
|
],
|
|
52
51
|
dependencies: {
|
|
53
|
-
"@promster/metrics": "^
|
|
52
|
+
"@promster/metrics": "^9.0.0",
|
|
54
53
|
"merge-options": "3.0.4",
|
|
55
54
|
semver: "7.3.5",
|
|
56
55
|
tslib: "2.3.1"
|
|
57
56
|
},
|
|
58
57
|
devDependencies: {
|
|
59
58
|
"@hapi/boom": "9.1.4",
|
|
60
|
-
"@
|
|
61
|
-
"@types
|
|
59
|
+
"@hapi/hapi": "20.2.1",
|
|
60
|
+
"@promster/types": "^3.2.0",
|
|
61
|
+
"@types/hapi__hapi": "20.0.9",
|
|
62
|
+
"parse-prometheus-text-format": "1.1.1"
|
|
62
63
|
}
|
|
63
64
|
};
|
|
64
65
|
|
|
65
66
|
const extractPath = request => request.route.path.replace(/\?/g, '');
|
|
66
|
-
/* eslint-disable @typescript-eslint/no-unnecessary-type-arguments */
|
|
67
|
-
|
|
68
67
|
|
|
69
|
-
// eslint-disable-next-line no-undef
|
|
70
68
|
const isBoomResponse = response => response.isBoom;
|
|
71
|
-
/* eslint-enable @typescript-eslint/no-unnecessary-type-arguments */
|
|
72
|
-
|
|
73
69
|
|
|
74
70
|
const extractStatusCode = request => {
|
|
75
71
|
const {
|
|
@@ -121,12 +117,13 @@ const createPlugin = ({
|
|
|
121
117
|
} = {
|
|
122
118
|
options: undefined
|
|
123
119
|
}) => {
|
|
124
|
-
const
|
|
125
|
-
const shouldSkipMetricsByEnvironment =
|
|
126
|
-
const
|
|
127
|
-
const
|
|
128
|
-
|
|
129
|
-
|
|
120
|
+
const allDefaultedOptions = merge__default["default"](metrics.createHttpMetrics.defaultOptions, metrics.createGcMetrics.defaultOptions, metrics.createRequestRecorder.defaultOptions, metrics.createGcObserver.defaultOptions, metrics.defaultNormalizers, pluginOptions);
|
|
121
|
+
const shouldSkipMetricsByEnvironment = metrics.skipMetricsInEnvironment(allDefaultedOptions);
|
|
122
|
+
const httpMetrics = metrics.createHttpMetrics(allDefaultedOptions);
|
|
123
|
+
const gcMetrics = metrics.createGcMetrics(allDefaultedOptions);
|
|
124
|
+
const observeGc = metrics.createGcObserver(gcMetrics, allDefaultedOptions);
|
|
125
|
+
recordRequest = metrics.createRequestRecorder(httpMetrics, allDefaultedOptions);
|
|
126
|
+
upMetric = gcMetrics === null || gcMetrics === void 0 ? void 0 : gcMetrics.up;
|
|
130
127
|
|
|
131
128
|
if (!shouldSkipMetricsByEnvironment) {
|
|
132
129
|
observeGc();
|
|
@@ -150,27 +147,26 @@ const createPlugin = ({
|
|
|
150
147
|
};
|
|
151
148
|
|
|
152
149
|
const onResponseHandler = (request, response) => {
|
|
153
|
-
var
|
|
150
|
+
var _allDefaultedOptions$, _request$headers$cont, _request$headers, _request$response$hea, _request$response, _request$response$hea2, _allDefaultedOptions$2;
|
|
154
151
|
|
|
155
152
|
const labels = Object.assign({}, {
|
|
156
|
-
path:
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
const shouldSkipByRequest = (_defaultedOptions$ski = defaultedOptions.skip) === null || _defaultedOptions$ski === void 0 ? void 0 : _defaultedOptions$ski.call(defaultedOptions, request, response, labels);
|
|
153
|
+
path: allDefaultedOptions.normalizePath(extractPath(request), {
|
|
154
|
+
req: request,
|
|
155
|
+
res: response
|
|
156
|
+
}),
|
|
157
|
+
method: allDefaultedOptions.normalizeMethod(request.method, {
|
|
158
|
+
req: request,
|
|
159
|
+
res: response
|
|
160
|
+
}),
|
|
161
|
+
status_code: allDefaultedOptions.normalizeStatusCode(extractStatusCode(request), {
|
|
162
|
+
req: request,
|
|
163
|
+
res: response
|
|
164
|
+
})
|
|
165
|
+
}, (_allDefaultedOptions$ = allDefaultedOptions.getLabelValues) === null || _allDefaultedOptions$ === void 0 ? void 0 : _allDefaultedOptions$.call(allDefaultedOptions, request, {}));
|
|
166
|
+
const requestContentLength = Number((_request$headers$cont = request === null || request === void 0 ? void 0 : (_request$headers = request.headers) === null || _request$headers === void 0 ? void 0 : _request$headers['content-length']) !== null && _request$headers$cont !== void 0 ? _request$headers$cont : 0);
|
|
167
|
+
const responseContentLength = Number( // @ts-expect-error
|
|
168
|
+
(_request$response$hea = request === null || request === void 0 ? void 0 : (_request$response = request.response) === null || _request$response === void 0 ? void 0 : (_request$response$hea2 = _request$response.headers) === null || _request$response$hea2 === void 0 ? void 0 : _request$response$hea2['content-length']) !== null && _request$response$hea !== void 0 ? _request$response$hea : 0);
|
|
169
|
+
const shouldSkipByRequest = (_allDefaultedOptions$2 = allDefaultedOptions.skip) === null || _allDefaultedOptions$2 === void 0 ? void 0 : _allDefaultedOptions$2.call(allDefaultedOptions, request, response, labels);
|
|
174
170
|
|
|
175
171
|
if (!shouldSkipByRequest && !shouldSkipMetricsByEnvironment) {
|
|
176
172
|
recordRequest(request.plugins.promster.start, {
|
|
@@ -13,13 +13,11 @@ var merge__default = /*#__PURE__*/_interopDefault(merge);
|
|
|
13
13
|
|
|
14
14
|
var pkg = {
|
|
15
15
|
name: "@promster/hapi",
|
|
16
|
-
version: "
|
|
16
|
+
version: "8.0.0",
|
|
17
17
|
description: "Hapi server integrations of promster",
|
|
18
18
|
main: "dist/promster-hapi.cjs.js",
|
|
19
19
|
typings: "dist/promster-hapi.cjs.d.ts",
|
|
20
20
|
types: "dist/promster-hapi.cjs.d.ts",
|
|
21
|
-
scripts: {
|
|
22
|
-
},
|
|
23
21
|
files: [
|
|
24
22
|
"readme.md",
|
|
25
23
|
"package.json",
|
|
@@ -31,12 +29,13 @@ var pkg = {
|
|
|
31
29
|
access: "public"
|
|
32
30
|
},
|
|
33
31
|
engines: {
|
|
34
|
-
node: ">=
|
|
35
|
-
npm: ">=6
|
|
32
|
+
node: ">=14",
|
|
33
|
+
npm: ">=6"
|
|
36
34
|
},
|
|
37
35
|
repository: {
|
|
38
36
|
type: "git",
|
|
39
|
-
url: "
|
|
37
|
+
url: "https://github.com/tdeekens/flopflip.git",
|
|
38
|
+
directory: "packages/hapi"
|
|
40
39
|
},
|
|
41
40
|
author: "Tobias Deekens <nerd@tdeekens.name>",
|
|
42
41
|
license: "MIT",
|
|
@@ -50,26 +49,23 @@ var pkg = {
|
|
|
50
49
|
"prometheus"
|
|
51
50
|
],
|
|
52
51
|
dependencies: {
|
|
53
|
-
"@promster/metrics": "^
|
|
52
|
+
"@promster/metrics": "^9.0.0",
|
|
54
53
|
"merge-options": "3.0.4",
|
|
55
54
|
semver: "7.3.5",
|
|
56
55
|
tslib: "2.3.1"
|
|
57
56
|
},
|
|
58
57
|
devDependencies: {
|
|
59
58
|
"@hapi/boom": "9.1.4",
|
|
60
|
-
"@
|
|
61
|
-
"@types
|
|
59
|
+
"@hapi/hapi": "20.2.1",
|
|
60
|
+
"@promster/types": "^3.2.0",
|
|
61
|
+
"@types/hapi__hapi": "20.0.9",
|
|
62
|
+
"parse-prometheus-text-format": "1.1.1"
|
|
62
63
|
}
|
|
63
64
|
};
|
|
64
65
|
|
|
65
66
|
const extractPath = request => request.route.path.replace(/\?/g, '');
|
|
66
|
-
/* eslint-disable @typescript-eslint/no-unnecessary-type-arguments */
|
|
67
|
-
|
|
68
67
|
|
|
69
|
-
// eslint-disable-next-line no-undef
|
|
70
68
|
const isBoomResponse = response => response.isBoom;
|
|
71
|
-
/* eslint-enable @typescript-eslint/no-unnecessary-type-arguments */
|
|
72
|
-
|
|
73
69
|
|
|
74
70
|
const extractStatusCode = request => {
|
|
75
71
|
const {
|
|
@@ -121,12 +117,13 @@ const createPlugin = ({
|
|
|
121
117
|
} = {
|
|
122
118
|
options: undefined
|
|
123
119
|
}) => {
|
|
124
|
-
const
|
|
125
|
-
const shouldSkipMetricsByEnvironment =
|
|
126
|
-
const
|
|
127
|
-
const
|
|
128
|
-
|
|
129
|
-
|
|
120
|
+
const allDefaultedOptions = merge__default["default"](metrics.createHttpMetrics.defaultOptions, metrics.createGcMetrics.defaultOptions, metrics.createRequestRecorder.defaultOptions, metrics.createGcObserver.defaultOptions, metrics.defaultNormalizers, pluginOptions);
|
|
121
|
+
const shouldSkipMetricsByEnvironment = metrics.skipMetricsInEnvironment(allDefaultedOptions);
|
|
122
|
+
const httpMetrics = metrics.createHttpMetrics(allDefaultedOptions);
|
|
123
|
+
const gcMetrics = metrics.createGcMetrics(allDefaultedOptions);
|
|
124
|
+
const observeGc = metrics.createGcObserver(gcMetrics, allDefaultedOptions);
|
|
125
|
+
recordRequest = metrics.createRequestRecorder(httpMetrics, allDefaultedOptions);
|
|
126
|
+
upMetric = gcMetrics === null || gcMetrics === void 0 ? void 0 : gcMetrics.up;
|
|
130
127
|
|
|
131
128
|
if (!shouldSkipMetricsByEnvironment) {
|
|
132
129
|
observeGc();
|
|
@@ -150,27 +147,26 @@ const createPlugin = ({
|
|
|
150
147
|
};
|
|
151
148
|
|
|
152
149
|
const onResponseHandler = (request, response) => {
|
|
153
|
-
var
|
|
150
|
+
var _allDefaultedOptions$, _request$headers$cont, _request$headers, _request$response$hea, _request$response, _request$response$hea2, _allDefaultedOptions$2;
|
|
154
151
|
|
|
155
152
|
const labels = Object.assign({}, {
|
|
156
|
-
path:
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
const shouldSkipByRequest = (_defaultedOptions$ski = defaultedOptions.skip) === null || _defaultedOptions$ski === void 0 ? void 0 : _defaultedOptions$ski.call(defaultedOptions, request, response, labels);
|
|
153
|
+
path: allDefaultedOptions.normalizePath(extractPath(request), {
|
|
154
|
+
req: request,
|
|
155
|
+
res: response
|
|
156
|
+
}),
|
|
157
|
+
method: allDefaultedOptions.normalizeMethod(request.method, {
|
|
158
|
+
req: request,
|
|
159
|
+
res: response
|
|
160
|
+
}),
|
|
161
|
+
status_code: allDefaultedOptions.normalizeStatusCode(extractStatusCode(request), {
|
|
162
|
+
req: request,
|
|
163
|
+
res: response
|
|
164
|
+
})
|
|
165
|
+
}, (_allDefaultedOptions$ = allDefaultedOptions.getLabelValues) === null || _allDefaultedOptions$ === void 0 ? void 0 : _allDefaultedOptions$.call(allDefaultedOptions, request, {}));
|
|
166
|
+
const requestContentLength = Number((_request$headers$cont = request === null || request === void 0 ? void 0 : (_request$headers = request.headers) === null || _request$headers === void 0 ? void 0 : _request$headers['content-length']) !== null && _request$headers$cont !== void 0 ? _request$headers$cont : 0);
|
|
167
|
+
const responseContentLength = Number( // @ts-expect-error
|
|
168
|
+
(_request$response$hea = request === null || request === void 0 ? void 0 : (_request$response = request.response) === null || _request$response === void 0 ? void 0 : (_request$response$hea2 = _request$response.headers) === null || _request$response$hea2 === void 0 ? void 0 : _request$response$hea2['content-length']) !== null && _request$response$hea !== void 0 ? _request$response$hea : 0);
|
|
169
|
+
const shouldSkipByRequest = (_allDefaultedOptions$2 = allDefaultedOptions.skip) === null || _allDefaultedOptions$2 === void 0 ? void 0 : _allDefaultedOptions$2.call(allDefaultedOptions, request, response, labels);
|
|
174
170
|
|
|
175
171
|
if (!shouldSkipByRequest && !shouldSkipMetricsByEnvironment) {
|
|
176
172
|
recordRequest(request.plugins.promster.start, {
|
package/package.json
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@promster/hapi",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "8.0.0",
|
|
4
4
|
"description": "Hapi server integrations of promster",
|
|
5
5
|
"main": "dist/promster-hapi.cjs.js",
|
|
6
6
|
"typings": "dist/promster-hapi.cjs.d.ts",
|
|
7
7
|
"types": "dist/promster-hapi.cjs.d.ts",
|
|
8
|
-
"scripts": {},
|
|
9
8
|
"files": [
|
|
10
9
|
"readme.md",
|
|
11
10
|
"package.json",
|
|
@@ -17,12 +16,13 @@
|
|
|
17
16
|
"access": "public"
|
|
18
17
|
},
|
|
19
18
|
"engines": {
|
|
20
|
-
"node": ">=
|
|
21
|
-
"npm": ">=6
|
|
19
|
+
"node": ">=14",
|
|
20
|
+
"npm": ">=6"
|
|
22
21
|
},
|
|
23
22
|
"repository": {
|
|
24
23
|
"type": "git",
|
|
25
|
-
"url": "
|
|
24
|
+
"url": "https://github.com/tdeekens/flopflip.git",
|
|
25
|
+
"directory": "packages/hapi"
|
|
26
26
|
},
|
|
27
27
|
"author": "Tobias Deekens <nerd@tdeekens.name>",
|
|
28
28
|
"license": "MIT",
|
|
@@ -36,14 +36,16 @@
|
|
|
36
36
|
"prometheus"
|
|
37
37
|
],
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@promster/metrics": "^
|
|
39
|
+
"@promster/metrics": "^9.0.0",
|
|
40
40
|
"merge-options": "3.0.4",
|
|
41
41
|
"semver": "7.3.5",
|
|
42
42
|
"tslib": "2.3.1"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
45
|
"@hapi/boom": "9.1.4",
|
|
46
|
-
"@
|
|
47
|
-
"@types
|
|
46
|
+
"@hapi/hapi": "20.2.1",
|
|
47
|
+
"@promster/types": "^3.2.0",
|
|
48
|
+
"@types/hapi__hapi": "20.0.9",
|
|
49
|
+
"parse-prometheus-text-format": "1.1.1"
|
|
48
50
|
}
|
|
49
51
|
}
|
package/readme.md
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<b style="font-size: 25px">⏰ Promster - Measure metrics from Hapi/Express servers with Prometheus 🚦</b
|
|
3
|
-
<i>Promster is an Prometheus Exporter for Node.js servers written with Express or Hapi.</i>
|
|
2
|
+
<b style="font-size: 25px">⏰ Promster - Measure metrics from Hapi/Express servers with Prometheus 🚦</b>
|
|
4
3
|
</p>
|
|
5
4
|
|
|
6
5
|
### `@promster/hapi`
|