28 lines
712 B
JavaScript
28 lines
712 B
JavaScript
'use strict';
|
|
|
|
const util = require('util');
|
|
|
|
// These are from https://prometheus.io/docs/concepts/data_model/#metric-names-and-labels
|
|
const metricRegexp = /^[a-zA-Z_:][a-zA-Z0-9_:]*$/;
|
|
const labelRegexp = /^[a-zA-Z_][a-zA-Z0-9_]*$/;
|
|
|
|
exports.validateMetricName = function (name) {
|
|
return metricRegexp.test(name);
|
|
};
|
|
|
|
exports.validateLabelName = function (names = []) {
|
|
return names.every(name => labelRegexp.test(name));
|
|
};
|
|
|
|
exports.validateLabel = function validateLabel(savedLabels, labels) {
|
|
for (const label in labels) {
|
|
if (!savedLabels.includes(label)) {
|
|
throw new Error(
|
|
`Added label "${label}" is not included in initial labelset: ${util.inspect(
|
|
savedLabels,
|
|
)}`,
|
|
);
|
|
}
|
|
}
|
|
};
|