@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.
@@ -13,13 +13,11 @@ var merge__default = /*#__PURE__*/_interopDefault(merge);
13
13
 
14
14
  var pkg = {
15
15
  name: "@promster/hapi",
16
- version: "6.1.1",
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: ">=12",
35
- npm: ">=6.9.0"
32
+ node: ">=14",
33
+ npm: ">=6"
36
34
  },
37
35
  repository: {
38
36
  type: "git",
39
- url: "git+https://github.com/tdeekens/promster.git"
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": "^7.0.1",
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
- "@promster/types": "^3.1.1",
61
- "@types/hapi__hapi": "20.0.9"
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 defaultedOptions = merge__default["default"](metrics.createMetricTypes.defaultOptions, metrics.createRequestRecorder.defaultOptions, metrics.defaultNormalizers, pluginOptions);
125
- const shouldSkipMetricsByEnvironment = defaultedOptions.detectKubernetes === true && !metrics.isRunningInKubernetes();
126
- const metricTypes = metrics.createMetricTypes(defaultedOptions);
127
- const observeGc = metrics.createGcObserver(metricTypes);
128
- recordRequest = metrics.createRequestRecorder(metricTypes, defaultedOptions);
129
- upMetric = metricTypes === null || metricTypes === void 0 ? void 0 : metricTypes.up;
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 _defaultedOptions$get, _request$headers, _request$response, _request$response$hea, _defaultedOptions$ski;
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: defaultedOptions.normalizePath(extractPath(request)),
157
- method: defaultedOptions.normalizeMethod(request.method),
158
- status_code: defaultedOptions.normalizeStatusCode(extractStatusCode(request))
159
- }, (_defaultedOptions$get = defaultedOptions.getLabelValues) === null || _defaultedOptions$get === void 0 ? void 0 : _defaultedOptions$get.call(defaultedOptions, request, {}));
160
- let requestContentLength;
161
-
162
- if (request !== null && request !== void 0 && (_request$headers = request.headers) !== null && _request$headers !== void 0 && _request$headers['content-length']) {
163
- requestContentLength = Number(request.headers['content-length']);
164
- }
165
-
166
- let responseContentLength;
167
-
168
- if (request !== null && request !== void 0 && (_request$response = request.response) !== null && _request$response !== void 0 && (_request$response$hea = _request$response.headers) !== null && _request$response$hea !== void 0 && _request$response$hea['content-length']) {
169
- responseContentLength = Number( // @ts-expect-error
170
- request.response.headers['content-length']);
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: "6.1.1",
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: ">=12",
35
- npm: ">=6.9.0"
32
+ node: ">=14",
33
+ npm: ">=6"
36
34
  },
37
35
  repository: {
38
36
  type: "git",
39
- url: "git+https://github.com/tdeekens/promster.git"
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": "^7.0.1",
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
- "@promster/types": "^3.1.1",
61
- "@types/hapi__hapi": "20.0.9"
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 defaultedOptions = merge__default["default"](metrics.createMetricTypes.defaultOptions, metrics.createRequestRecorder.defaultOptions, metrics.defaultNormalizers, pluginOptions);
125
- const shouldSkipMetricsByEnvironment = defaultedOptions.detectKubernetes === true && !metrics.isRunningInKubernetes();
126
- const metricTypes = metrics.createMetricTypes(defaultedOptions);
127
- const observeGc = metrics.createGcObserver(metricTypes);
128
- recordRequest = metrics.createRequestRecorder(metricTypes, defaultedOptions);
129
- upMetric = metricTypes === null || metricTypes === void 0 ? void 0 : metricTypes.up;
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 _defaultedOptions$get, _request$headers, _request$response, _request$response$hea, _defaultedOptions$ski;
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: defaultedOptions.normalizePath(extractPath(request)),
157
- method: defaultedOptions.normalizeMethod(request.method),
158
- status_code: defaultedOptions.normalizeStatusCode(extractStatusCode(request))
159
- }, (_defaultedOptions$get = defaultedOptions.getLabelValues) === null || _defaultedOptions$get === void 0 ? void 0 : _defaultedOptions$get.call(defaultedOptions, request, {}));
160
- let requestContentLength;
161
-
162
- if (request !== null && request !== void 0 && (_request$headers = request.headers) !== null && _request$headers !== void 0 && _request$headers['content-length']) {
163
- requestContentLength = Number(request.headers['content-length']);
164
- }
165
-
166
- let responseContentLength;
167
-
168
- if (request !== null && request !== void 0 && (_request$response = request.response) !== null && _request$response !== void 0 && (_request$response$hea = _request$response.headers) !== null && _request$response$hea !== void 0 && _request$response$hea['content-length']) {
169
- responseContentLength = Number( // @ts-expect-error
170
- request.response.headers['content-length']);
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": "6.1.1",
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": ">=12",
21
- "npm": ">=6.9.0"
19
+ "node": ">=14",
20
+ "npm": ">=6"
22
21
  },
23
22
  "repository": {
24
23
  "type": "git",
25
- "url": "git+https://github.com/tdeekens/promster.git"
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": "^7.0.1",
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
- "@promster/types": "^3.1.1",
47
- "@types/hapi__hapi": "20.0.9"
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><br />
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`