@n8n/n8n-nodes-langchain
Version:

66 lines • 2.27 kB
JavaScript
;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var keywords_exports = {};
__export(keywords_exports, {
createKeywordsCheckFn: () => createKeywordsCheckFn
});
module.exports = __toCommonJS(keywords_exports);
const keywordsCheck = (text, config) => {
const { keywords } = config;
const sanitizedKeywords = keywords.map((k) => k.replace(/[.,!?;:]+$/, ""));
const validKeywords = sanitizedKeywords.filter((k) => k.length > 0);
if (validKeywords.length === 0) {
return {
guardrailName: "keywords",
tripwireTriggered: false,
info: {
matchedKeywords: []
}
};
}
const escapedKeywords = validKeywords.map(
(k) => k.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")
);
const patternText = `\\b(?:${escapedKeywords.join("|")})\\b`;
const pattern = new RegExp(patternText, "gi");
const matches = [];
let match;
const seen = /* @__PURE__ */ new Set();
while ((match = pattern.exec(text)) !== null) {
const matchedText = match[0];
if (!seen.has(matchedText.toLowerCase())) {
matches.push(matchedText);
seen.add(matchedText.toLowerCase());
}
}
const tripwireTriggered = matches.length > 0;
return {
guardrailName: "keywords",
tripwireTriggered,
info: {
matchedKeywords: matches
}
};
};
const createKeywordsCheckFn = (config) => (input) => keywordsCheck(input, config);
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
createKeywordsCheckFn
});
//# sourceMappingURL=keywords.js.map