@promster/marblejs 5.0.0 → 6.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,3 +1,3 @@
1
1
  import { createMiddleware, getRequestRecorder, signalIsUp, signalIsNotUp } from './middleware';
2
- import { getSummary, getContentType, Prometheus, defaultRegister, defaultNormalizers } from '@promster/metrics';
3
- export { createMiddleware, getRequestRecorder, signalIsUp, signalIsNotUp, getSummary, getContentType, Prometheus, defaultRegister, defaultNormalizers, };
2
+ import { getSummary, getContentType, Prometheus, defaultRegister, defaultNormalizers, timing } from '@promster/metrics';
3
+ export { createMiddleware, getRequestRecorder, signalIsUp, signalIsNotUp, getSummary, getContentType, Prometheus, defaultRegister, defaultNormalizers, timing, };
@@ -1,6 +1,6 @@
1
1
  import type { TPromsterOptions } from '@promster/types';
2
2
  import type { TRequestRecorder } from '@promster/metrics';
3
- import { HttpRequest, HttpResponse } from '@marblejs/core';
3
+ import { HttpRequest } from '@marblejs/core';
4
4
  import { Observable } from 'rxjs';
5
5
  declare const extractPath: (req: HttpRequest) => string;
6
6
  declare const getRequestRecorder: () => TRequestRecorder;
@@ -9,5 +9,5 @@ declare const signalIsNotUp: () => void;
9
9
  declare type TMiddlewareOptions = {
10
10
  options?: TPromsterOptions;
11
11
  };
12
- declare const createMiddleware: ({ options }?: TMiddlewareOptions) => (req$: Observable<HttpRequest>, res: HttpResponse) => Observable<HttpRequest<unknown, unknown, unknown>>;
12
+ declare const createMiddleware: ({ options }?: TMiddlewareOptions) => (req$: Observable<HttpRequest>, res: HttpResponse) => Observable<HttpRequest>;
13
13
  export { createMiddleware, extractPath, getRequestRecorder, signalIsUp, signalIsNotUp, };
@@ -46,19 +46,28 @@ const recordHandler = (res, shouldSkipMetricsByEnvironment, opts) => stamp => rx
46
46
 
47
47
  const {
48
48
  req,
49
- start
49
+ timing
50
50
  } = stamp;
51
51
  const labels = Object.assign({}, {
52
- method: opts.normalizeMethod(req.method),
53
- status_code: opts.normalizeStatusCode(res.statusCode),
54
- path: opts.normalizePath(extractPath(req))
52
+ method: opts.normalizeMethod(req.method, {
53
+ res,
54
+ req
55
+ }),
56
+ status_code: opts.normalizeStatusCode(res.statusCode, {
57
+ res,
58
+ req
59
+ }),
60
+ path: opts.normalizePath(extractPath(req), {
61
+ res,
62
+ req
63
+ })
55
64
  }, (_opts$getLabelValues = opts.getLabelValues) === null || _opts$getLabelValues === void 0 ? void 0 : _opts$getLabelValues.call(opts, req, res));
56
65
  const shouldSkipByRequest = (_opts$skip = opts.skip) === null || _opts$skip === void 0 ? void 0 : _opts$skip.call(opts, req, res, labels);
57
66
  const responseContentLength = Number((_res$getHeader = res.getHeader('content-length')) !== null && _res$getHeader !== void 0 ? _res$getHeader : 0);
58
67
  const requestContentLength = Number((_req$headers$content = req.headers['content-length']) !== null && _req$headers$content !== void 0 ? _req$headers$content : 0);
59
68
 
60
69
  if (!shouldSkipByRequest && !shouldSkipMetricsByEnvironment) {
61
- recordRequest(start, {
70
+ recordRequest(timing, {
62
71
  labels,
63
72
  requestContentLength,
64
73
  responseContentLength
@@ -69,12 +78,13 @@ const recordHandler = (res, shouldSkipMetricsByEnvironment, opts) => stamp => rx
69
78
  const createMiddleware = ({
70
79
  options
71
80
  } = {}) => {
72
- const defaultedOptions = merge__default["default"](metrics.createMetricTypes.defaultOptions, metrics.createRequestRecorder.defaultOptions, metrics.defaultNormalizers, options);
73
- const metricTypes = metrics.createMetricTypes(defaultedOptions);
74
- const observeGc = metrics.createGcObserver(metricTypes);
75
- const shouldSkipMetricsByEnvironment = defaultedOptions.detectKubernetes && !metrics.isRunningInKubernetes();
76
- recordRequest = metrics.createRequestRecorder(metricTypes, defaultedOptions);
77
- upMetric = metricTypes === null || metricTypes === void 0 ? void 0 : metricTypes.up;
81
+ const allDefaultedOptions = merge__default["default"](metrics.createHttpMetrics.defaultOptions, metrics.createGcMetrics.defaultOptions, metrics.createRequestRecorder.defaultOptions, metrics.createGcObserver.defaultOptions, metrics.defaultNormalizers, options);
82
+ const httpMetrics = metrics.createHttpMetrics(allDefaultedOptions);
83
+ const gcMetrics = metrics.createGcMetrics(allDefaultedOptions);
84
+ const observeGc = metrics.createGcObserver(gcMetrics, allDefaultedOptions);
85
+ const shouldSkipMetricsByEnvironment = metrics.skipMetricsInEnvironment(allDefaultedOptions);
86
+ recordRequest = metrics.createRequestRecorder(httpMetrics, allDefaultedOptions);
87
+ upMetric = gcMetrics === null || gcMetrics === void 0 ? void 0 : gcMetrics.up;
78
88
 
79
89
  if (!shouldSkipMetricsByEnvironment) {
80
90
  observeGc();
@@ -83,8 +93,8 @@ const createMiddleware = ({
83
93
  function middleware(req$, res) {
84
94
  return req$.pipe(operators.map(req => ({
85
95
  req,
86
- start: process.hrtime()
87
- })), operators.tap(recordHandler(res, shouldSkipMetricsByEnvironment, defaultedOptions)), operators.map(({
96
+ timing: metrics.timing.start()
97
+ })), operators.tap(recordHandler(res, shouldSkipMetricsByEnvironment, allDefaultedOptions)), operators.map(({
88
98
  req
89
99
  }) => req));
90
100
  }
@@ -112,6 +122,10 @@ Object.defineProperty(exports, 'getSummary', {
112
122
  enumerable: true,
113
123
  get: function () { return metrics.getSummary; }
114
124
  });
125
+ Object.defineProperty(exports, 'timing', {
126
+ enumerable: true,
127
+ get: function () { return metrics.timing; }
128
+ });
115
129
  exports.createMiddleware = createMiddleware;
116
130
  exports.getRequestRecorder = getRequestRecorder;
117
131
  exports.signalIsNotUp = signalIsNotUp;
@@ -46,19 +46,28 @@ const recordHandler = (res, shouldSkipMetricsByEnvironment, opts) => stamp => rx
46
46
 
47
47
  const {
48
48
  req,
49
- start
49
+ timing
50
50
  } = stamp;
51
51
  const labels = Object.assign({}, {
52
- method: opts.normalizeMethod(req.method),
53
- status_code: opts.normalizeStatusCode(res.statusCode),
54
- path: opts.normalizePath(extractPath(req))
52
+ method: opts.normalizeMethod(req.method, {
53
+ res,
54
+ req
55
+ }),
56
+ status_code: opts.normalizeStatusCode(res.statusCode, {
57
+ res,
58
+ req
59
+ }),
60
+ path: opts.normalizePath(extractPath(req), {
61
+ res,
62
+ req
63
+ })
55
64
  }, (_opts$getLabelValues = opts.getLabelValues) === null || _opts$getLabelValues === void 0 ? void 0 : _opts$getLabelValues.call(opts, req, res));
56
65
  const shouldSkipByRequest = (_opts$skip = opts.skip) === null || _opts$skip === void 0 ? void 0 : _opts$skip.call(opts, req, res, labels);
57
66
  const responseContentLength = Number((_res$getHeader = res.getHeader('content-length')) !== null && _res$getHeader !== void 0 ? _res$getHeader : 0);
58
67
  const requestContentLength = Number((_req$headers$content = req.headers['content-length']) !== null && _req$headers$content !== void 0 ? _req$headers$content : 0);
59
68
 
60
69
  if (!shouldSkipByRequest && !shouldSkipMetricsByEnvironment) {
61
- recordRequest(start, {
70
+ recordRequest(timing, {
62
71
  labels,
63
72
  requestContentLength,
64
73
  responseContentLength
@@ -69,12 +78,13 @@ const recordHandler = (res, shouldSkipMetricsByEnvironment, opts) => stamp => rx
69
78
  const createMiddleware = ({
70
79
  options
71
80
  } = {}) => {
72
- const defaultedOptions = merge__default["default"](metrics.createMetricTypes.defaultOptions, metrics.createRequestRecorder.defaultOptions, metrics.defaultNormalizers, options);
73
- const metricTypes = metrics.createMetricTypes(defaultedOptions);
74
- const observeGc = metrics.createGcObserver(metricTypes);
75
- const shouldSkipMetricsByEnvironment = defaultedOptions.detectKubernetes && !metrics.isRunningInKubernetes();
76
- recordRequest = metrics.createRequestRecorder(metricTypes, defaultedOptions);
77
- upMetric = metricTypes === null || metricTypes === void 0 ? void 0 : metricTypes.up;
81
+ const allDefaultedOptions = merge__default["default"](metrics.createHttpMetrics.defaultOptions, metrics.createGcMetrics.defaultOptions, metrics.createRequestRecorder.defaultOptions, metrics.createGcObserver.defaultOptions, metrics.defaultNormalizers, options);
82
+ const httpMetrics = metrics.createHttpMetrics(allDefaultedOptions);
83
+ const gcMetrics = metrics.createGcMetrics(allDefaultedOptions);
84
+ const observeGc = metrics.createGcObserver(gcMetrics, allDefaultedOptions);
85
+ const shouldSkipMetricsByEnvironment = metrics.skipMetricsInEnvironment(allDefaultedOptions);
86
+ recordRequest = metrics.createRequestRecorder(httpMetrics, allDefaultedOptions);
87
+ upMetric = gcMetrics === null || gcMetrics === void 0 ? void 0 : gcMetrics.up;
78
88
 
79
89
  if (!shouldSkipMetricsByEnvironment) {
80
90
  observeGc();
@@ -83,8 +93,8 @@ const createMiddleware = ({
83
93
  function middleware(req$, res) {
84
94
  return req$.pipe(operators.map(req => ({
85
95
  req,
86
- start: process.hrtime()
87
- })), operators.tap(recordHandler(res, shouldSkipMetricsByEnvironment, defaultedOptions)), operators.map(({
96
+ timing: metrics.timing.start()
97
+ })), operators.tap(recordHandler(res, shouldSkipMetricsByEnvironment, allDefaultedOptions)), operators.map(({
88
98
  req
89
99
  }) => req));
90
100
  }
@@ -112,6 +122,10 @@ Object.defineProperty(exports, 'getSummary', {
112
122
  enumerable: true,
113
123
  get: function () { return metrics.getSummary; }
114
124
  });
125
+ Object.defineProperty(exports, 'timing', {
126
+ enumerable: true,
127
+ get: function () { return metrics.timing; }
128
+ });
115
129
  exports.createMiddleware = createMiddleware;
116
130
  exports.getRequestRecorder = getRequestRecorder;
117
131
  exports.signalIsNotUp = signalIsNotUp;
package/package.json CHANGED
@@ -1,11 +1,10 @@
1
1
  {
2
2
  "name": "@promster/marblejs",
3
- "version": "5.0.0",
3
+ "version": "6.0.3",
4
4
  "description": "MarbleJs server integrations of promster",
5
5
  "main": "dist/promster-marblejs.cjs.js",
6
6
  "typings": "dist/promster-marblejs.cjs.d.ts",
7
7
  "types": "dist/promster-marblejs.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/marblejs"
26
26
  },
27
27
  "author": "Lukas Sulik <l.nuzky@gmail.com>",
28
28
  "license": "MIT",
@@ -36,13 +36,15 @@
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
- "rxjs": "^6.5.3",
41
+ "rxjs": "^6.6.7",
42
42
  "tslib": "2.3.1"
43
43
  },
44
44
  "devDependencies": {
45
- "@marblejs/core": "3.5.1",
46
- "fp-ts": "2.11.5"
45
+ "@marblejs/core": "4.0.2",
46
+ "@marblejs/http": "4.0.2",
47
+ "fp-ts": "2.11.8",
48
+ "parse-prometheus-text-format": "1.1.1"
47
49
  }
48
50
  }
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/marblejs`