@promster/hapi 7.0.0 → 8.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.
@@ -1,6 +1,6 @@
1
1
  import type { TPromsterOptions } from '@promster/types';
2
2
  import type { Server } from '@hapi/hapi';
3
3
  import { createPlugin, getRequestRecorder, signalIsUp, signalIsNotUp } from './plugin';
4
- import { getSummary, getContentType, Prometheus, defaultRegister, defaultNormalizers } from '@promster/metrics';
4
+ import { getSummary, getContentType, Prometheus, defaultRegister, defaultNormalizers, timing } from '@promster/metrics';
5
5
  declare const instrument: (server: Server, options: TPromsterOptions) => Promise<void>;
6
- export { createPlugin, getRequestRecorder, signalIsUp, signalIsNotUp, getSummary, getContentType, Prometheus, defaultRegister, defaultNormalizers, instrument, };
6
+ export { createPlugin, getRequestRecorder, signalIsUp, signalIsNotUp, getSummary, getContentType, Prometheus, defaultRegister, defaultNormalizers, instrument, timing, };
@@ -13,13 +13,11 @@ var merge__default = /*#__PURE__*/_interopDefault(merge);
13
13
 
14
14
  var pkg = {
15
15
  name: "@promster/hapi",
16
- version: "7.0.0",
16
+ version: "8.0.3",
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",
@@ -36,7 +34,8 @@ var pkg = {
36
34
  },
37
35
  repository: {
38
36
  type: "git",
39
- url: "git+https://github.com/tdeekens/promster.git"
37
+ url: "https://github.com/tdeekens/promster.git",
38
+ directory: "packages/hapi"
40
39
  },
41
40
  author: "Tobias Deekens <nerd@tdeekens.name>",
42
41
  license: "MIT",
@@ -50,15 +49,17 @@ var pkg = {
50
49
  "prometheus"
51
50
  ],
52
51
  dependencies: {
53
- "@promster/metrics": "^8.0.0",
52
+ "@promster/metrics": "^9.1.3",
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.5",
61
- "@types/hapi__hapi": "20.0.9"
59
+ "@hapi/hapi": "20.2.1",
60
+ "@promster/types": "^3.2.3",
61
+ "@types/hapi__hapi": "20.0.10",
62
+ "parse-prometheus-text-format": "1.1.1"
62
63
  }
63
64
  };
64
65
 
@@ -116,12 +117,13 @@ const createPlugin = ({
116
117
  } = {
117
118
  options: undefined
118
119
  }) => {
119
- const defaultedOptions = merge__default["default"](metrics.createMetricTypes.defaultOptions, metrics.createRequestRecorder.defaultOptions, metrics.defaultNormalizers, pluginOptions);
120
- const shouldSkipMetricsByEnvironment = defaultedOptions.detectKubernetes && !metrics.isRunningInKubernetes();
121
- const metricTypes = metrics.createMetricTypes(defaultedOptions);
122
- const observeGc = metrics.createGcObserver(metricTypes);
123
- recordRequest = metrics.createRequestRecorder(metricTypes, defaultedOptions);
124
- 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;
125
127
 
126
128
  if (!shouldSkipMetricsByEnvironment) {
127
129
  observeGc();
@@ -138,27 +140,36 @@ const createPlugin = ({
138
140
 
139
141
  const onRequestHandler = (request, h) => {
140
142
  request.plugins.promster = {
141
- start: process.hrtime()
143
+ timing: metrics.timing.start()
142
144
  }; // @ts-expect-error
143
145
 
144
146
  return doesResponseNeedInvocation ? h.continue() : h.continue;
145
147
  };
146
148
 
147
149
  const onResponseHandler = (request, response) => {
148
- var _defaultedOptions$get, _request$headers$cont, _request$headers, _request$response$hea, _request$response, _request$response$hea2, _defaultedOptions$ski;
150
+ var _allDefaultedOptions$, _request$headers$cont, _request$headers, _request$response$hea, _request$response, _request$response$hea2, _allDefaultedOptions$2;
149
151
 
150
152
  const labels = Object.assign({}, {
151
- path: defaultedOptions.normalizePath(extractPath(request)),
152
- method: defaultedOptions.normalizeMethod(request.method),
153
- status_code: defaultedOptions.normalizeStatusCode(extractStatusCode(request))
154
- }, (_defaultedOptions$get = defaultedOptions.getLabelValues) === null || _defaultedOptions$get === void 0 ? void 0 : _defaultedOptions$get.call(defaultedOptions, request, {}));
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, {}));
155
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);
156
167
  const responseContentLength = Number( // @ts-expect-error
157
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);
158
- const shouldSkipByRequest = (_defaultedOptions$ski = defaultedOptions.skip) === null || _defaultedOptions$ski === void 0 ? void 0 : _defaultedOptions$ski.call(defaultedOptions, request, response, labels);
169
+ const shouldSkipByRequest = (_allDefaultedOptions$2 = allDefaultedOptions.skip) === null || _allDefaultedOptions$2 === void 0 ? void 0 : _allDefaultedOptions$2.call(allDefaultedOptions, request, response, labels);
159
170
 
160
171
  if (!shouldSkipByRequest && !shouldSkipMetricsByEnvironment) {
161
- recordRequest(request.plugins.promster.start, {
172
+ recordRequest(request.plugins.promster.timing, {
162
173
  labels,
163
174
  requestContentLength,
164
175
  responseContentLength
@@ -222,6 +233,10 @@ Object.defineProperty(exports, 'getSummary', {
222
233
  enumerable: true,
223
234
  get: function () { return metrics.getSummary; }
224
235
  });
236
+ Object.defineProperty(exports, 'timing', {
237
+ enumerable: true,
238
+ get: function () { return metrics.timing; }
239
+ });
225
240
  exports.createPlugin = createPlugin;
226
241
  exports.getRequestRecorder = getRequestRecorder;
227
242
  exports.instrument = instrument;
@@ -13,13 +13,11 @@ var merge__default = /*#__PURE__*/_interopDefault(merge);
13
13
 
14
14
  var pkg = {
15
15
  name: "@promster/hapi",
16
- version: "7.0.0",
16
+ version: "8.0.3",
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",
@@ -36,7 +34,8 @@ var pkg = {
36
34
  },
37
35
  repository: {
38
36
  type: "git",
39
- url: "git+https://github.com/tdeekens/promster.git"
37
+ url: "https://github.com/tdeekens/promster.git",
38
+ directory: "packages/hapi"
40
39
  },
41
40
  author: "Tobias Deekens <nerd@tdeekens.name>",
42
41
  license: "MIT",
@@ -50,15 +49,17 @@ var pkg = {
50
49
  "prometheus"
51
50
  ],
52
51
  dependencies: {
53
- "@promster/metrics": "^8.0.0",
52
+ "@promster/metrics": "^9.1.3",
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.5",
61
- "@types/hapi__hapi": "20.0.9"
59
+ "@hapi/hapi": "20.2.1",
60
+ "@promster/types": "^3.2.3",
61
+ "@types/hapi__hapi": "20.0.10",
62
+ "parse-prometheus-text-format": "1.1.1"
62
63
  }
63
64
  };
64
65
 
@@ -116,12 +117,13 @@ const createPlugin = ({
116
117
  } = {
117
118
  options: undefined
118
119
  }) => {
119
- const defaultedOptions = merge__default["default"](metrics.createMetricTypes.defaultOptions, metrics.createRequestRecorder.defaultOptions, metrics.defaultNormalizers, pluginOptions);
120
- const shouldSkipMetricsByEnvironment = defaultedOptions.detectKubernetes && !metrics.isRunningInKubernetes();
121
- const metricTypes = metrics.createMetricTypes(defaultedOptions);
122
- const observeGc = metrics.createGcObserver(metricTypes);
123
- recordRequest = metrics.createRequestRecorder(metricTypes, defaultedOptions);
124
- 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;
125
127
 
126
128
  if (!shouldSkipMetricsByEnvironment) {
127
129
  observeGc();
@@ -138,27 +140,36 @@ const createPlugin = ({
138
140
 
139
141
  const onRequestHandler = (request, h) => {
140
142
  request.plugins.promster = {
141
- start: process.hrtime()
143
+ timing: metrics.timing.start()
142
144
  }; // @ts-expect-error
143
145
 
144
146
  return doesResponseNeedInvocation ? h.continue() : h.continue;
145
147
  };
146
148
 
147
149
  const onResponseHandler = (request, response) => {
148
- var _defaultedOptions$get, _request$headers$cont, _request$headers, _request$response$hea, _request$response, _request$response$hea2, _defaultedOptions$ski;
150
+ var _allDefaultedOptions$, _request$headers$cont, _request$headers, _request$response$hea, _request$response, _request$response$hea2, _allDefaultedOptions$2;
149
151
 
150
152
  const labels = Object.assign({}, {
151
- path: defaultedOptions.normalizePath(extractPath(request)),
152
- method: defaultedOptions.normalizeMethod(request.method),
153
- status_code: defaultedOptions.normalizeStatusCode(extractStatusCode(request))
154
- }, (_defaultedOptions$get = defaultedOptions.getLabelValues) === null || _defaultedOptions$get === void 0 ? void 0 : _defaultedOptions$get.call(defaultedOptions, request, {}));
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, {}));
155
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);
156
167
  const responseContentLength = Number( // @ts-expect-error
157
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);
158
- const shouldSkipByRequest = (_defaultedOptions$ski = defaultedOptions.skip) === null || _defaultedOptions$ski === void 0 ? void 0 : _defaultedOptions$ski.call(defaultedOptions, request, response, labels);
169
+ const shouldSkipByRequest = (_allDefaultedOptions$2 = allDefaultedOptions.skip) === null || _allDefaultedOptions$2 === void 0 ? void 0 : _allDefaultedOptions$2.call(allDefaultedOptions, request, response, labels);
159
170
 
160
171
  if (!shouldSkipByRequest && !shouldSkipMetricsByEnvironment) {
161
- recordRequest(request.plugins.promster.start, {
172
+ recordRequest(request.plugins.promster.timing, {
162
173
  labels,
163
174
  requestContentLength,
164
175
  responseContentLength
@@ -222,6 +233,10 @@ Object.defineProperty(exports, 'getSummary', {
222
233
  enumerable: true,
223
234
  get: function () { return metrics.getSummary; }
224
235
  });
236
+ Object.defineProperty(exports, 'timing', {
237
+ enumerable: true,
238
+ get: function () { return metrics.timing; }
239
+ });
225
240
  exports.createPlugin = createPlugin;
226
241
  exports.getRequestRecorder = getRequestRecorder;
227
242
  exports.instrument = instrument;
package/package.json CHANGED
@@ -1,11 +1,10 @@
1
1
  {
2
2
  "name": "@promster/hapi",
3
- "version": "7.0.0",
3
+ "version": "8.0.3",
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",
@@ -22,7 +21,8 @@
22
21
  },
23
22
  "repository": {
24
23
  "type": "git",
25
- "url": "git+https://github.com/tdeekens/promster.git"
24
+ "url": "https://github.com/tdeekens/promster.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": "^8.0.0",
39
+ "@promster/metrics": "^9.1.3",
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.5",
47
- "@types/hapi__hapi": "20.0.9"
46
+ "@hapi/hapi": "20.2.1",
47
+ "@promster/types": "^3.2.3",
48
+ "@types/hapi__hapi": "20.0.10",
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`