@backstage/backend-defaults
Version:
Backend defaults used by Backstage backend apps
39 lines (36 loc) • 1.13 kB
JavaScript
;
const parseRegex = (s) => {
if (!s.startsWith("/")) return null;
const lastSlash = s.lastIndexOf("/");
if (lastSlash <= 0) return null;
const pattern = s.slice(1, lastSlash);
const flags = s.slice(lastSlash + 1);
try {
return new RegExp(pattern, flags);
} catch {
return null;
}
};
const createLogFieldMatcher = (matcher) => {
if (Array.isArray(matcher)) {
const fns = matcher.map((m) => createLogFieldMatcher(m));
return (logField) => fns.some((fn) => fn(logField));
}
if (typeof matcher !== "string") {
return (logField) => logField === matcher;
}
const regex = parseRegex(matcher);
if (regex) {
return (logField) => typeof logField === "string" && regex.test(logField);
}
return (logField) => logField === matcher;
};
const createLogMatcher = (matchers) => {
const logFieldMatchers = Object.entries(matchers).map(([key, m]) => {
const fn = createLogFieldMatcher(m);
return [key, fn];
});
return (log) => logFieldMatchers.every(([key, fn]) => fn(log[key]));
};
exports.createLogMatcher = createLogMatcher;
//# sourceMappingURL=utils.cjs.js.map